我有一臺服務器運行在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 –