2010-12-02 100 views
1

在本地,但沒有工作,我有一個非常惱人的問題。我有一個mIRC/Skype應用程序,意思是帶文字和聲音的聊天室。文本&聊天室的東西經過TCP和完美的作品,而UDP只記錄數據到其他連接的客戶端的繼電器。C#udpclient/UDP套接字 - 全球地址

兩個客戶端之間我的家庭網絡,音頻傳輸工作正常。但是,對一個全球性的客戶端,服務器將niether從他那裏收到的數據包,或者他會從服務器接收數據包。

下面是一個例子:

服務器是使用UDP套接字,而客戶端使用udpclient,但結果是一樣的反正它也本地工作..

服務器全球IP:222.222.222.222 服務器本地IP:192.168.2.3 服務器端口:9999

客戶全球IP:111.111.111.111 客戶端本地IP:192.168.0.100 客戶端端口:8888

服務器 *結合其插座192.168.2.3:9999 *從111.111.111.111接收:8888 *發送給111.111.111.111.111:8888

客戶端 *結合其插座192.168.0.100 *收到222.222.222.222:9999 *發送到222.222.222.222:9999

...你明白我的意思了。我不知道爲什麼數據無法通過。我試過在端口53上發送/接收(對於客戶端和服務器端),這甚至不是必須的嗎?我的意思是交通應該通過反正(就像它與遊戲,如使命召喚那樣),沒有沒有激活了Windows防火牆,只有在這種情況下,路由器。

客戶端/服務器互相使用connect(),而不是receiveFrom/sendTo。我也嘗試過使用它,但沒有區別。

我沒有得到任何異常或任何東西要麼所以它不可能調試:(

怎麼可能是這個原因考慮其本地工作,但不是全局的事實;我不同意聽起來真是一個防火牆的問題,但I'e如上所述我看不出這就是如何適用於我的情況,我試圖在端口53和其他開放的端口..

乾杯:)

編輯:它的代碼很很多,但如果必要我可以複製它

回答

2

您無法將UDP廣播到整個互聯網(我認爲這就是您'全球'的意思) - 它只能在發佈廣播的機器的子網內工作。這就是爲什麼它在本地工作,而不是在遠程機器上工作。

你可能要考慮使用IP組播來代替:

http://en.wikipedia.org/wiki/IP_Multicast

這就是說,你也可能有問題,由於一些路由器(你有沒有控制權),將不允許多播數據包被轉發。

+0

你沒有看到一個例外的原因是,UDP是火,忘了。發行方正在發送廣播,就像它在本地設置中一樣,沒有問題,問題是接收方無法接收廣播。 – MrEyes 2010-12-02 21:25:28