PC和Android ICS之间的UDP组播(CSharp与Java)

时间:2012-08-09 20:56:29

标签: c# udp multicast udpclient

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

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

在同一网络内的2台PC之间进行了另一次测试后,似乎是 那些即使是那两个人也不会互相交谈。

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

有没有人对此有任何想法(或者甚至可能是与防火墙相关的问题)? 一些代码(只有基本部分,监视和管理列表,例如。)

初​​始化:

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

在Ctor:

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设备确实收到
我的电脑上还有任何包裹。
[/编辑]

1 个答案:

答案 0 :(得分:0)

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

在Ctor:

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

在发件人主题中:

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

在Receiver Thread中:

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

有时它是小事......

现在是时候尝试使用我的Android设备进行互操作了。