C# PC和Android ICS之间的UDP多播(CSharp与Java)

C# PC和Android ICS之间的UDP多播(CSharp与Java),c#,udp,multicast,udpclient,C#,Udp,Multicast,Udpclient,我有个小毛病,让我头疼得厉害。 我为UDP通信编写了两个小程序(每个程序接收和发送数据) 到目前为止的测试: -PC发送和接收数据包。 -Android发送并接收数据包。 在同一网络内的两台电脑之间进行另一次测试后,似乎 即使那两个人也不说话 android设备使用的Java代码主要采用 来自我为Android集群编写的一个(正在运行的)程序(因此我认为它是正确的) 有人对此有什么想法吗(或者可能是与防火墙相关的问题)? 一些代码(仅重要部分、监控和管理剥离清单,例如) 初始化: 在Ctor中:

我有个小毛病,让我头疼得厉害。
我为UDP通信编写了两个小程序(每个程序接收和发送数据)

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

在同一网络内的两台电脑之间进行另一次测试后,似乎
即使那两个人也不说话

android设备使用的Java代码主要采用
来自我为Android集群编写的一个(正在运行的)程序(因此我认为它是正确的)

有人对此有什么想法吗(或者可能是与防火墙相关的问题)?
一些代码(仅重要部分、监控和管理剥离清单,例如)

初始化:

在Ctor中:

udpClient = new UdpClient(udpPort);
udpClient.MulticastLoopback = true;
udpClient.EnableBroadcast = true;
udpClient.AllowNatTraversal(true);
udpClient.JoinMulticastGroup(mCastAddress);
udpClient = new UdpClient(udpPort);
udpClient.MulticastLoopback = true;
udpClient.EnableBroadcast = 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);
 IPEndPoint iep = iep = new IPEndPoint(IPAddress.Broadcast, udpPort); 
IPEndPoint iep = new IPEndPoint(IPAddress.Any,udpPort);
接收器线程:

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);
 IPEndPoint iep = iep = new IPEndPoint(IPAddress.Broadcast, udpPort); 
IPEndPoint iep = new IPEndPoint(IPAddress.Any,udpPort);
提前感谢。
[编辑]
我要提到的是,安卓设备似乎没有收到
我的电脑上也有任何软件包。

[/EDIT]

好的,我找到了解决电脑问题的方法:

在Ctor中:

udpClient = new UdpClient(udpPort);
udpClient.MulticastLoopback = true;
udpClient.EnableBroadcast = true;
udpClient.AllowNatTraversal(true);
udpClient.JoinMulticastGroup(mCastAddress);
udpClient = new UdpClient(udpPort);
udpClient.MulticastLoopback = true;
udpClient.EnableBroadcast = 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);
 IPEndPoint iep = iep = new IPEndPoint(IPAddress.Broadcast, udpPort); 
IPEndPoint iep = new IPEndPoint(IPAddress.Any,udpPort);
在接收器线程中:

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);
 IPEndPoint iep = iep = new IPEndPoint(IPAddress.Broadcast, udpPort); 
IPEndPoint iep = new IPEndPoint(IPAddress.Any,udpPort);
有时候是一些小事


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

接收者的端点不应该与发送者在同一个端口上侦听吗?端口
0
通常不起作用:)好吧,端口0就在那里,因为绝望的谷歌;它不适用于其他端口:(你要通过NAT吗?除非路由器经过专门配置,否则多播不会通过路由器传输。需要澄清的是:开始时我只使用members MulticastLoopback和JoinMulticastGroup。其他的都是因为到目前为止还不起作用而添加的。我现在要做一些测试。谢谢你。现在一切都正常了。奇怪的是ing是:为了让所有的人都跑起来,我必须发送到广播(255.255.255.255)。如果它跑起来,不要抱怨:)