我有一台服务器运行在Windows 7台式电脑上,客户端运行在Windows XP联想笔记本电脑上。UDP数据读取不正确(延迟)
下保持在一个循环中发生的事情:
- 的客户端广播包含一些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)
我想这不是一个endianess问题,现在呢? –
看起来不是这样,因为大约20秒后数据正确无误....并且在wireshark中数据始终正确......非常奇怪。 –
另一个提示可能是......关闭服务器之后......客户端仍然获得UDP数据包一段时间:D –