1. 程式人生 > >解決UDP出現的10054錯誤

解決UDP出現的10054錯誤

問題描述如下:


一個機器A有兩個IP 一個是內網的 一個是外網的 有用UDP寫的C/S的程式 S放在A上 我的機器在內網 當我用內網IP通訊時 A能接收到資料並且A也能把接收到的資料返回 當我用外網IP通訊時 A能接收到資料 但下次接收就出現10054錯誤 然後又恢復正常了,而且我不能接收到A返回的資料。實在想不明白是什麼原因

解決辦法:

1.我也碰到類似的問題,這是winsock的BUG,你可以在 WSAGetLastError() 返回 10054 錯誤程式碼的時候安全的忽略這個錯誤,對後續的呼叫沒有影響。

2.BOOL bNewBehavior = FALSE;
DWORD dwBytesReturned = 0;
WSAIoctl(m_Sckt, SIO_UDP_CONNRESET, &bNewBehavior, sizeof bNewBehavior, NULL, 0, &dwBytesReturned, NULL, NULL);

p.s m_Sckt 是UDP SOCKET

上面的兩種方法都沒驗證