开发中遇到问题,
Recv 出错,返回10054
用sniffer 抓包分析,正常交易以FIN 4次握手结束,该交易服务器以返回RST 结束。
查找资料,为什么返回RST。
有一种原因是接收缓冲区中还有数据,此时调用closesocket,就会返回RST,而不是正常的FIN四次握手结束。
看一下程序,发送时确实多发了几个字节。
服务器根据定长报文格式只取了前面的内容,调用closesocket,造成了客户端接收出错。
改正很简单,把发送长度写正确了就OK了。
开发中遇到问题,
Recv 出错,返回10054
用sniffer 抓包分析,正常交易以FIN 4次握手结束,该交易服务器以返回RST 结束。
查找资料,为什么返回RST。
有一种原因是接收缓冲区中还有数据,此时调用closesocket,就会返回RST,而不是正常的FIN四次握手结束。
看一下程序,发送时确实多发了几个字节。
服务器根据定长报文格式只取了前面的内容,调用closesocket,造成了客户端接收出错。
改正很简单,把发送长度写正确了就OK了。