2010-12-02 101 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