我正在尝试使用带有BRI接口的ISDN网络中的C#代码接收广播消息。
我看到使用Comm View工具在某些端口上发送到广播IP地址(239.255.255.255)的数据包。
但是当我尝试收听这个IP地址时,它说地址不在有效的上下文中。
但是当我在端口上向255.255.255.255发送广播消息时,我可以使用以下代码接收这些消息。
这个ip地址有什么问题 - 239.255.255.255?
The code I use to listen to broadcast messages is..
UdpClient udp = new UdpClient();
IPEndPoint receiveEndPoint = new IPEndPoint(IPAddress.Any, 8013);
// If I use IPAddress.Parse("239.255.255.255") to listen to,
// it says "the address is not in a valid // context."
udp.Client.Bind(receiveEndPoint);
udp.BeginReceive(_Callback, udp);
static private void _Callback(IAsyncResult iar)
{
try
{
UdpClient client = (UdpClient)iar.AsyncState;
client.BeginReceive(_Callback, client);
IPEndPoint ipRemote = new IPEndPoint(IPAddress.Any, 8013);
byte[] rgb = client.EndReceive(iar, ref ipRemote);
Console.WriteLine("Received {0} bytes: \"{1}\"",
rgb.Length.ToString(), Encoding.UTF8.GetString(rgb));
}
catch (ObjectDisposedException)
{
Console.WriteLine("closing listening socket");
}
catch (Exception exc)
{
Console.WriteLine("Listening socket error: \"" +
exc.Message + "\"");
}
}
有一些数据包被发送到广播ipaddress(239.255.255.255),我可以在Commview工具中看到,但无法从代码中接收它们...
有人可以帮帮我吗?
提前感谢你,
Prasad Kancharla。
答案 0 :(得分:0)
我在组播方面做得不多,但我相信准备接收组播数据包的过程分为两个步骤。首先,绑定到本地IP地址,这是您使用IPAddress.Any
完成的操作。然后,您需要使用MulticastOption
方法使用Socket.SetSocketOption
对象指定要加入的多播组。
MSDN Library有一个example供您参考。
答案 1 :(得分:0)
听起来你假设地址是定向广播(子网本地广播),当它实际上是为多播保留的IP地址范围时,这完全不同。