2010-12-03 31 views
1

我有一個奇怪的問題。我有一個客戶端發送數據包到我的服務器,但我的服務器UDP套接字永遠不會收到它們。相反的事情發生在其他方面,如果我送,他試圖接受。C# - WireShark檢測到包數據包但應用程序沒有收到它們

檢查這一形象,Wireshark的捕獲: http://img263.imageshack.us/img263/2636/bokus.png

我甲肝束縛我的UDP套接字到端點192.168.2.3,這是服務器的內部IP和端口9998 客戶端發送數據到我的IP,然後應該被轉發到本地服務器機器。 正如你可以看到wireshark清楚地檢測到目的端口爲9998的192.168.2.3的數據包,但沒有任何東西被傳送!

(...爲什麼它在BTW目的端口說distinct32?)

+0

你的問題沒有提供任何線索可能是錯誤的。您的代碼中可能存在一個錯誤。 – dtb 2010-12-03 17:59:31

+0

我不知道什麼可能是錯的; UDP套接字綁定到正確的EndPoint,並從右端接收receivedFrom。 receiveFrom回調永遠不會被觸發,我知道爲什麼會這樣。什麼可能會影響這個比錯誤的EndPoints(我知道是正確的)? – KaiserJohaan 2010-12-03 18:04:23

回答

0

別的東西看的是確保你可以運行任何防火牆有一個規則設置,讓你的端口9998

上通信

如果我不得不猜測(需要知道你的接收C#代碼),看起來你可能試圖接收UDP數據包,但在客戶端使用TCP協議。 (或者我可能只是誤解了你截圖的一些文本。)

Theres在使用UDP時不需要「監聽」連接。 UDP數據包沒有連接/斷開協議。他們也不保證數據包按照它們發送的順序接收。

嘗試在C#客戶端中沿着這些行使用某些內容並查看是否獲取數據。

var udpClient = new System.Net.Sockets.UdpClient(9998); 
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); 
相關問題