我利用Socket做文件传输,一个传输任务一个线程。
问题是如果我多个任务一起工作的时候,经常发送端发送完成并关闭Socket后,接收方会收到FD_CLOSE,但是数据却还没有接收完成。
百思不得其解,请各位指点!谢谢!

解决方案 »

  1.   

    sleep a while then close the socket, since the packet may delay a while on the network
      

  2.   

    1.每次发送完,你可以在发送端发送一个结束命令,接受端根据命令关闭socket.
    2.在接收端根据你传送的文件的大小判断是否已经接受完毕。然后关闭socket.
      

  3.   

    用消息机制,或者自己控制数据结束完后再close
      

  4.   

    是不是发送端调用了closesocket?
    多个任务一起工作是什么含义?同时传多个文件,没有多线程吧?
      

  5.   

    在发送端发送完成后调用了closesocket
    多个任务就是多个线程同时传送多个文件。可能同时接收和发送。