潇洒蓝桥 2015-12-16 05:45 采纳率: 30%
浏览 1390
已采纳

MFC中的文件传输,但是接收方只能收到24k数据,求解……

     //发送数据
      CString strpath="文本文件(*.txt)|*.txt||";
            CFileDialog filed(true,NULL,NULL,OFN_HIDEREADONLY,strpath,NULL);
            filed.m_ofn.lpstrTitle="打开将要发送的文件";
            if(filed.DoModal()!=IDOK)
                return;
            POSITION pt=filed.GetStartPosition();
            CString path=filed.GetNextPathName(pt); 
            CFile file;
            file.Open(path,CFile::modeRead|CFile::typeBinary ); //创建文件读取对象
            file.Seek(0,CFile::begin);  //从文件结尾处移动文件指针

            int nSize=0;
            int nRead=0;
            int nSend;
            char sBuf[2048]={0};
            while(1)
            {
                nRead=file.Read(sBuf,2048);
                if(nRead<=0)
                    break;
                nSize+=nRead;
                nSend=send(s,sBuf,nRead,0);
                if(nSend!=nRead && nRead>0)
                    file.Seek(nSize-nRead+nSend,CFile::begin);

            }
            file.Close();

    //接收数据      
    CString strpath="文本文件(*.txt)|*.txt||";
        CString num1="";
        CFileDialog filed(false,NULL,NULL,OFN_HIDEREADONLY,strpath,NULL);
        filed.m_ofn.lpstrTitle="选择接收文件所保存的位置";
        if(filed.DoModal()==IDOK)
        {

            POSITION pt=filed.GetStartPosition();
            CString path=filed.GetNextPathName(pt); 
            CFile file;
            file.Open(path,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);//创建文件对象
            file.Seek(0,CFile::begin);  //从文件结尾处移动文件指针

            UINT nData=0;
            UINT nSize=0;
            char rBuf[2048]={0};
            while(1)
            {
                nData=recv(s1,rBuf,2048,0);
                if(nData==0 || nData>2048 || (-1 == nData &&GetLastError() != WSAEWOULDBLOCK))
                    break;
                file.Write(rBuf,nData);
                file.Flush();
                nSize+=nData;   
            }
            file.Close();

大神们,帮我看看是什么问题啊?

  • 写回答

1条回答 默认 最新

  • oyljerry 2015-12-16 14:49
    关注

    是否循环发送接收 定义自己的格式来解析接收数据长度以及数据包结束标识

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?