gpt4 book ai didi

wireshark - UDP 数据未正确读取(延迟)

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:04 24 4
gpt4 key购买 nike

我有一个在 Windows 7 台式电脑上运行的服务器,以及一个在 Windows XP 联想笔记本电脑上运行的客户端。

以下循环不断发生:

  • 客户端正在广播包含一些 ID 信息的 UDP 数据包。
  • 服务器收到广播并回复另一个包含一些数据的 UDP 数据包。

我可以在 Wireshark 中看到服务器正在发送正确的数据,但是 RECVFROM 函数正在返回一些其他数据。大约 20-30 秒后,数据终于被正确读取。

如果我在桌面上运行服务器和客户端,它工作正常。有任何想法吗?


相关代码:

do
{
result=recvfrom(_socket,buff,buffLen,0,(SOCKADDR*)&SenderAddr,&SenderAddrSize);
if(result != SOCKET_ERROR)
{
//small processing
.....
////
sendto(_socket,buff,16,0,(SOCKADDR*)&SenderAddr,sizeof(SenderAddr));
}
while(true)

最佳答案

在这里进行一些猜测。

我无法想象您的 UDP 数据包会在某个地方徘徊 20 秒。毕竟,全局范围内公共(public)互联网上的 RTT 通常比它低 40 倍。因此,我认为您只需不断重新发送数据,直到获得预期的响应。

如果我的假设是正确的,那么您看到的是正常的 UDP 数据包丢失。那台笔记本电脑在无线连接上吗?客户端应用程序是否会阻止某些输入?

也在笔记本电脑上运行 wireshark。您是否看到与发送方(服务器)端相同的数据包数量和顺序?如果是这样,那么客户端就不会足够快地使用这些数据包。如果您真的看到客户端返回的数据包有 20 秒的延迟,那么您真的必须描述更多的设置来解释魔术:)

关于wireshark - UDP 数据未正确读取(延迟),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6863313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com