现在的问题是,我在发送的时候,有些图片好像服务器端根本就
没有触发ClientRead事件,也就无法返回成功或失败的消息。
我把时间间隔改长一些(3S)以后就可以了。

解决方案 »

  1.   

    你是用的非阻塞模式吧,这样当发送数据量很大时接收缓冲区里的数据有可能被冲掉。
    最好是接收端用阻塞模式,发送端用非阻塞模式。当接收端收完后向服务器端发消息确认。
    另,大文件要分成小块传输,ip包最大为64k,一般设成4k较安全。
      

  2.   

    你的包在缓冲区里被冲调了,socket的缓冲区是这样的,缓冲区里有数据包1,而这时又有数据包2到来,1就会被2冲掉了。你可以自己再设一个大的缓冲区,数据包一到先写到缓冲区里,而不是马上就进行处理,而且最好是用sendstream()来传送文件