文档详情

用vc++发送文件夹方法.doc

发布:2018-04-12约3.25千字共3页下载文档
文本预览下载声明
关于发送文件夹的一方法 VC 作者:梦幻极光 ???? 发送文件夹有很多方法,但是网上的代码很少,VC只有飞鸽有源代码,但是它采用的API的编程模式,不容易理解,加之注释又是日文或英文的,这样理解起来就更困难些. ???? 有很多人在网上发帖子询问如何发送文件夹,有人回答:用Winraar压缩再传,说实话是个方法,但是是个很无聊的方法.还有人说先遍历文件,发现是目录就叫对方建立一个.这个也是个方法,但是有些复杂,尤其是目录又深又多,难免出错. ???? 我要给大家介绍的方法是: ???? 1.先传把文件目录和文件名都传过去; ???? 2.处理文件目录以便建立. ???? 3.传输文件夹. ??? 首先,我们先定义一个结构体 ???? struct FOLDERINFO ?? { ??????? int fileLength;??????????????????? //记录文件长度 ???????? char fileName[128];???????????????? //记录文件名 ??????? char filePath[512]???????????????? //记录文件路径 ?? }; ?? 这里需要说明一下,为什么文件名,文件路径不用CString定义,原因是这个结构体我们要发给对方的,但是由于CString长度是不丁长的,导致结构体长度不能确定,从而使程序出错. ?? 下面就是发送方的代码,我已经省去了目录选择和遍历目录的代码: ??? void CMyQQDlg::SendFiles() { CSocket sockClient; sockClient.Create();???????????????????????? //创建Socket CString ip; m_You_IP.GetWindowText(ip);????????????????? //m_You_IP是IP控件的变量 sockClient.Connect(ip, 11024);?????? // ?? /////////////////////////////////////////////////////////////////// CString fileName; ///////////////////////这是发送方处理目录的代码,如果没有这段代码 fileName=m_fileName;?????????????????? //将只能发送根目录下的文件:) int a=fileName.Find(filepathone); if(a!=2) { ?? fileName=fileName.Right(fileName.GetLength()-a-1); ?? fileName=C:\\+fileName; } //////////////////////////////////////////////////////////////////////////// CFile myFile; FOLDERINFO myFileInfo; if(!myFile.Open(m_fileName,CFile::modeRead|CFile::typeBinary))//m_fileName是遍历后得到的文件 return ;????????????????????? myFileInfo.fileLength=myFile.GetLength();?????????? //得到文件大小 strcpy(myFileInfo.fileName,myFile.GetFileName());??? //得到文件名称 ??? strcpy(myFileInfo.filePath,m_fileName); sockClient.Send(myFileInfo,sizeof(myFileInfo));???? //发送文件信息 myFile.Seek(0,CFile::begin); char m_buf[SIZEFILE]={0};?????????????????????????? //缓冲区 CString strError; int num=0; int temp=0; //开始发送 for(;;) { ???? num=myFile.Read(m_buf, SIZEFILE); ?? if(num==0) break; ?? end=sockClient.Send(m_buf, num); ?? temp+=end;?? } ???? myFile.Close(); sockClient.Close(); return ; } 下面就是接收方的代码: int CMyQQDlg::SaveYouFiles(CSocket
显示全部
相似文档