2013-10-27 75 views
0

我現在正在使用C/C++進行併發套接字編程。我只是讓服務器接收來自客戶端的請求並將響應數據包發送給客戶端。我使用一個線程來接收來自客戶端的請求。當服務器收到新請求時,將創建一個新線程,以便向客戶端發送一些數據包。但是,我的客戶端的recvfrom總是返回winsock錯誤10054,同時我的服務器正在向特定客戶端發送數據包。UDP併發客戶端recvfrom錯誤

+0

你得到一個「ICMP端口不可達」響應,你應該可以處理的。 – Hasturkun

回答

0

根據this forum thread,這是一個無害的錯誤,您可以忽略它在客戶端。

+0

如何忽略它?>我仍然得到recvfrom返回值-1。即使我得到這個錯誤,它是否是recvfrom中的緩衝區仍然收到了消息。 – user2637966

1

此錯誤消息表示udp端口已關閉,並且您正在關閉的端口上接收數據包。例如,在voip電話中,客戶端發送origport = 12295,聲明請發送數據包並關閉工作端口32000 08:43:32.377 cip = 172.x.23.225 sip = 10.x.20.2 cport = 32000 sport = 32128 origport = 12295

但是,如果服務器不明白這一點,你仍然收到數據包上32000從服務器,然後客戶端將顯示此錯誤消息