0

我有一个小问题让我很头疼。
我写了两个用于 UDP 通信的小程序(每个都接收和发送)。

到目前为止的测试:
- PC 发送数据包并接收它。
- Android 发送数据包并接收它。

在同一网络内的 2 台 PC 之间进行另一次测试后,似乎
即使是这 2 台 PC 也不会相互通信。

用于 android 设备的 Java 代码主要
来自我为 Android 集群编写的(工作)程序(所以我认为它是正确的)。

有没有人对此有任何想法(或者甚至可能是与防火墙相关的问题)?
一些代码(仅重要部分,精简列表的监控和管理,例如)

在里面:

private UdpClient udpClient;
private static int udpPort=9998;
private IPAddress mCastAddress = IPAddress.Parse("239.255.255.255");

在克托:

udpClient = new UdpClient(udpPort);
udpClient.MulticastLoopback = true;
udpClient.EnableBroadcast = true;
udpClient.AllowNatTraversal(true);
udpClient.JoinMulticastGroup(mCastAddress);

发件人线程:

IPEndPoint iep = new IPEndPoint(mCastAddress, udpPort);           
//MessageCoder.encode(msg) is returning a valid byte[], no problem here.
byte[] data=MessageCoder.encode(msg);
udpClient.Send(data, data.Length, iep);                 

接收线程:

IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
byte[] data = udpClient.Receive(ref iep);

提前致谢。
[编辑]
我要提一下,android 设备似乎也没有从
我的电脑接收任何包。
[/编辑]

4

1 回答 1

0

好的,我找到了 PC <-> PC 问题的解决方案:

在克托:

udpClient = new UdpClient(udpPort);
udpClient.MulticastLoopback = true;
udpClient.EnableBroadcast = true;
udpClient.JoinMulticastGroup(mCastAddress);

在发件人线程中:

 IPEndPoint iep = iep = new IPEndPoint(IPAddress.Broadcast, udpPort); 

在接收线程中:

IPEndPoint iep = new IPEndPoint(IPAddress.Any,udpPort);

有时候是小事...

现在是时候尝试与我的 Android 设备互操作了。

于 2012-08-10T07:33:43.053 回答