什么情况下会导致服务器发包完成,但客户端很久(大约一分钟)才收到包

时间:2022-10-30 20:54:30
如题
首先服务器带宽没问题的,但不知道为何会出现这种情况
服务器在send函数返回成功后会输出日志提示成功发送,但客户端大约要等一分钟,有时候甚至几分钟后才哗啦哗啦地收到一大堆包,什么原因会导致这种情况呢?

6 个解决方案

#1


send返回表明发送数据包完毕,并不意味这客户端的recv函数能够豆接受成功啊。。

很有可能网络情况不好,发生拥塞,阻塞

#2


一般是网络问题

#3


先确保代码没有问题, lo测试一下吧。

#4


用wireshark抓包看看吧。一切都清楚了,就知道是网络问题还是程序问题了。
是否真正发送成功出去,发送后,是否收到对方的ACK确认包,是否有重传了,是否中间收到icmp报错的包。等等。

#5


客户端的recv()最后的标志位是MSG_WAITALL?有的改为0;
是不是还设定接收时间超时?

#6


同意4楼,抓抓包看看最清楚了!

#1


send返回表明发送数据包完毕,并不意味这客户端的recv函数能够豆接受成功啊。。

很有可能网络情况不好,发生拥塞,阻塞

#2


一般是网络问题

#3


先确保代码没有问题, lo测试一下吧。

#4


用wireshark抓包看看吧。一切都清楚了,就知道是网络问题还是程序问题了。
是否真正发送成功出去,发送后,是否收到对方的ACK确认包,是否有重传了,是否中间收到icmp报错的包。等等。

#5


客户端的recv()最后的标志位是MSG_WAITALL?有的改为0;
是不是还设定接收时间超时?

#6


同意4楼,抓抓包看看最清楚了!