我有一个连接echo服务器和测试客户端的UDP连接。测试客户端不断发送数据包,并等待大约一秒钟才能收到数据包。如果无法获取数据包,则假定该数据包已丢失,并发送另一个数据包。大多数数据包的发送和接收都是成功的,但其中一些假定丢失的数据包将在发送下一个数据包后在客户端接收到。实际上,它们是延迟接收的。我的发送和接收函数运行在不同的线程上。如何消除这些延迟的数据包?(我的程序在我的本地主机上运行-因此丢失数据包是不合理的)
发布于 2018-07-23 19:11:01
谢谢大家。
接收时select延迟应小于main中等待接收线程包的时间
发布于 2018-01-08 19:33:39
您很可能无法防止包延迟(可能是由于网络接口、内核、应用程序堆栈中的缓冲区)。UDP是不可靠的,如果你需要确保每个包都被传送,你通常应该使用TCP。否则,将有一些选项,比如使用序列号或更复杂的协议实现,以确保您不会失序(比如每个包的确认)。
不过,您所描述的听起来更像是使用TCP。
发布于 2018-01-08 19:32:42
如果网络拥塞或启用了代理/防火墙,就会发生这种情况。检查网络信号强度。如果在本地网络中启用了任何防火墙设置,则将其删除。在您的路由器中切换到具有良好强度的最佳通道。
https://stackoverflow.com/questions/48149364
复制相似问题