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

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
    已采纳

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题