我正试图在我那端有BRI接口的综合业务数字网网络中用C#码接收广播信息。
我使用Comm View tool在某些端口上看到发送到广播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 + "\"");
}
}有数据包发送到广播I地址(239.255.255.255),我可以在Commview工具中看到,但不能从代码中接收它们...
有谁能帮帮我吗?
先谢谢你,
普拉萨德·坎查拉。
发布于 2010-03-28 02:11:28
我没有做太多关于多播的工作,但我相信准备接收多播数据包是一个两步的过程。首先,绑定到本地IP地址,这就是您使用IPAddress.Any所做的事情。然后,您需要使用带有Socket.SetSocketOption方法的MulticastOption对象指定您希望加入的组播组。
MSDN Library有一个供您参考的example。
发布于 2010-03-28 02:15:54
这听起来像是假设该地址是定向广播(子网本地广播),而它实际上在为多播保留的IP地址范围内,这完全是另一回事。
https://stackoverflow.com/questions/2530209
复制相似问题