我有一个连接echo服务器和测试客户端的UDP连接。测试客户端不断发送数据包并等待大约一秒钟来接收它们。 如果它无法获取数据包,则假定数据包丢失并发送另一个数据包。 大多数数据包都成功发送和接收,但其中一些数据包假定丢失,将在发送下一个数据包后在客户端接收。实际上他们是延迟收到的。 我的发送和接收功能在不同的线程上运行。 我该怎么做才能消除这些延迟的数据包? (我的程序在我的localhost上运行 - 因此丢失数据包是不合理的)
答案 0 :(得分:0)
很可能您无法阻止程序包延迟(可能是由于网络接口,内核,应用程序堆栈中的缓冲区)。 UDP是不可靠的,如果你需要确保每个包都已交付,你应该使用TCP。否则会有一些选项,比如使用序列号或更复杂的协议implmenetation来确保你不会失序(如每个包的确认)。
你所描述的听起来更像是使用TCP会是合适的。
答案 1 :(得分:0)
谢谢。
接收中的选择延迟应小于等待接收主线程中的线程包的时间
答案 2 :(得分:-1)
如果启用了网络拥塞或代理/防火墙,可能会发生这种情况。 检查网络信号强度。 如果在本地网络中启用了任何防火墙设置,请删除。 切换到路由器中具有良好强度的最佳通道。