我的程序是要把一台机上的几个.XML文件发送到另一台机.我采用的是典型的完成端口通讯方式.发送每帧256个字节.在一台机上测试服务器和客户端完全正常,而通过两台机连接起来后通讯测试,发现每发送到一个文件的最后一个包时(该包总长度小于256个字节了),收到一方收到的竟然是256个字节的东西,收到的包包含了下一个文件开头的一些字符.但在接下来收到的包的字节数为上次文件的最后一个包的字节数(<256).前面的那个256个字节好像WSARevv多收了一次!不知道怎么回事?,但如果在发最后一个<256字节的包时等个200ms就不会多收到一个256字节的东西了.(注意:本程序单机测试完全正常)困扰几天,忘有朋友指教,不甚感激!
http://searchwhatis.techtarget.com.cn/searchwhatis/268/2025768.shtml
正确的处理应该是第一次发起WSARevv,WSABUF的len应该是一个包的完整长度,buf是缓冲区起始位置,下次再发起WSARevv时要根据实际传输的字节数来调整len(len-=TranBytes)和buf(buf+=TranBytes)值.