首先服务器带宽没问题的,但不知道为何会出现这种情况
服务器在send函数返回成功后会输出日志提示成功发送,但客户端大约要等一分钟,有时候甚至几分钟后才哗啦哗啦地收到一大堆包,什么原因会导致这种情况呢?
6 个解决方案
#1
send返回表明发送数据包完毕,并不意味这客户端的recv函数能够豆接受成功啊。。
很有可能网络情况不好,发生拥塞,阻塞
很有可能网络情况不好,发生拥塞,阻塞
#2
一般是网络问题
#3
先确保代码没有问题, lo测试一下吧。
#4
用wireshark抓包看看吧。一切都清楚了,就知道是网络问题还是程序问题了。
是否真正发送成功出去,发送后,是否收到对方的ACK确认包,是否有重传了,是否中间收到icmp报错的包。等等。
是否真正发送成功出去,发送后,是否收到对方的ACK确认包,是否有重传了,是否中间收到icmp报错的包。等等。
#5
客户端的recv()最后的标志位是MSG_WAITALL?有的改为0;
是不是还设定接收时间超时?
是不是还设定接收时间超时?
#6
同意4楼,抓抓包看看最清楚了!
#1
send返回表明发送数据包完毕,并不意味这客户端的recv函数能够豆接受成功啊。。
很有可能网络情况不好,发生拥塞,阻塞
很有可能网络情况不好,发生拥塞,阻塞
#2
一般是网络问题
#3
先确保代码没有问题, lo测试一下吧。
#4
用wireshark抓包看看吧。一切都清楚了,就知道是网络问题还是程序问题了。
是否真正发送成功出去,发送后,是否收到对方的ACK确认包,是否有重传了,是否中间收到icmp报错的包。等等。
是否真正发送成功出去,发送后,是否收到对方的ACK确认包,是否有重传了,是否中间收到icmp报错的包。等等。
#5
客户端的recv()最后的标志位是MSG_WAITALL?有的改为0;
是不是还设定接收时间超时?
是不是还设定接收时间超时?
#6
同意4楼,抓抓包看看最清楚了!