发送端 向 接收端 发送一个文件
发送端 如何知道接收端接收的进度。。
如果
发送端
while( 发送条件 )
{
     :
     :
    send( SOCKET, buffer, size )   //发送文件 
     :
     :
}
接收端
while( 接收条件 )
{
      :
      :
     recv( SOCKET, buffer, size )    //接收文件 
      :
      :
     send( ...... )   //向发送端返回接收到的大小
}我这样写,会造成 发送端 和 接收端 (网络阻塞 //我的理解)
发送端 和 接收端    都会在等待,程序假死。。那我如何知道,接收端接收文件的进度 

解决方案 »

  1.   

    我是用多线程写的,send  和  recv  用不同的线和工作..
      

  2.   

    send有返回值的,主是发送后一次后还有多少与发送之前比较一下就知道了
      

  3.   


    send 的返回值只是说明发出了多少个字节
    与 接收端 recv 不同步的
    就是说  发送端  发完了, 接收端还一定接收完...   这不是说它丢包了
      

  4.   

    首先你线程的句柄是知道的,使用API函数发送线程消息
    例:
    ::PostThreadMessage(m_pHook->m_nThreadID,WM_DATADSP_MESSAGE,(WPARAM)pStuThd,0);
    其中:
    m_pHook->m_nThreadID是消息接收线程的句柄
    WM_DATADSP_MESSAGE是自定义的消息
    后面是要传递的数据