我在发送端用CSocket SocketSend;来发送文件(我用的是TCP)
  接收端用的是CSocket SocketRecv;来接收文件(我用的是TCP)
  按照我的理解是:如果发送端旦用Send发送后就应该等待接收端的Recevie接收完.如果我在接收端
  没有Receive 发送端的Send就应该阻塞直等接收端Receive   而现在发送端不管接收端有没有Receive就一直不停的发送..  我不懂原由.  请高手们不吝讲解..

解决方案 »

  1.   

    接收端应该会有ACK才对。如果没有的话,应该下次不会再发才对。我的理解和你的一样。不过,你可以发发字符试试。
      

  2.   

       但在接收端若发送端没有发送时,调用receive时会阻塞
      

  3.   

    发送端是可以Send的,只是若接收端没有接收,Send会返回失败信息
      

  4.   

    这个非常容易啊. 可以让接收Socket先接收.,发送端后发送发送方:
    CFile theFile;
    theFile.Open(Path,CFile::modeRead|CFile::typeBinary);
    byte* pBuff=new byte[1024];
    UINT Sent=0;
    UINT temp=0;
    while(Sent<TempFile.FileSize)
    {   temp=0;
    temp=theFile.Read(pBuff, 1024);
    pSocket->Send(pBuff,temp);
    Sent+=temp;
    }theFile.Close(); delete pBuff;AfxMessageBox("文件传送完毕!",MB_OK+MB_ICONINFORMATION);
    接收方:
    CFile theFile;
    theFile.Open(Path,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
       
    byte* pBuff=new byte[1024];
    UINT Received=0;
    UINT temp=0;
    while(Received<TempFile.FileSize)
    {   temp=0;
    temp=pSocket->Receive(pBuff, 1024);
    theFile.Write(pBuff,temp);
    Received+=temp;
    }theFile.Close(); delete pBuff;
    AfxMessageBox("文件接收完毕!",MB_OK+MB_ICONINFORMATION);
      

  5.   

    不过接收最好是在接收 Socket 的 OnReceive( )方法中完成.
    这样更不容易出错
      

  6.   

       我楼主   to: mingbao(★情已逝★) ( )   我的代码和你的一样
      在传送多个文件时就出错了