读书人

手工断网后 send返回值竟为发送顺利!

发布时间: 2013-07-01 12:33:04 作者: rapoo

手工断网后 send返回值竟为发送成功!?
小弟自己尝试书写一个TCP客户端、服务器端通信例子。编译完成后运行一切正常。突发奇想想看看断网后send会返回何种错误,是否如同msdn所述(一切都要经过自己确认记忆才深嘛)。
connect连接正常后,断点调试暂停运行,在send需要发送数据之前,手工拔掉网线后,继续执行send发送数据,本以为会返回SOCKET_ERROR,但事实是send返回值为发送缓冲区总字节(意味发送成功)。
以下为实际情况截图:
第一步:
断点暂停执行在send发送数据前;
手工断网后 send返回值竟为发送顺利!

第二步:
手工拔掉网线;
手工断网后 send返回值竟为发送顺利!
手工断网后 send返回值竟为发送顺利!

第三步:
执行send发送。
手工断网后 send返回值竟为发送顺利!


小弟不解,请各位大大围观解析下手工断网后 send返回值竟为发送顺利!

假定本地地址192.168.1.100
假如你拔掉本地网线,你无法在用到这个ip地址,对c程序来说,拔网线基本等同禁用
[解决办法]
所以才需要有心跳包嘛。
[解决办法]
把这个 SO_SNDBUF 缓冲大小设置为 0

读书人网 >C++

热点推荐