【问题标题】:How do I correctly set up my UdpClient to listen on the multicast address 239.255.255.250:1900 in C#如何正确设置我的 UdpClient 以在 C# 中侦听多播地址 239.255.255.250:1900
【发布时间】:2012-12-17 00:38:58
【问题描述】:

我正在建立一个包含 3 台笔记本电脑的小型本地网络。我的目标是试验 UpNP 协议并让笔记本电脑使用 UpNP 发现彼此。为了做到这一点,他们需要能够监听彼此的通知。根据协议,这些通知在多播地址 239.255.255.250:1900 上发送。但是,我在设置笔记本电脑以收听该地址时遇到问题。我开始只使用 1 台电脑。我的电脑的 IP 地址是 10.0.0.5。

但是,当我尝试设置 UdpClient 以侦听 239.255.255.250:1900 时,我收到一条错误消息:“请求的地址在其上下文中无效”。

我试过用这个来设置它:

IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("239.255.255.250"), 1900);
UdpClient client = new UdpClient(endpoint);
client.BeginReceive(MessageReceived, null);

我也试过了:

UdpClient client = new UdpClient(Port);
client.JoinMulticastGroup(IPAddress.Parse("239.255.255.250"));
client.BeginReceive(MessageReceived, null);

但我仍然收到同样的错误:“请求的地址在其上下文中无效”。

如何正确设置我的 UdpClient 以侦听多播地址 239.255.255.250:1900?

感谢您的帮助!!!

【问题讨论】:

    标签: multicast upnp notify udpclient service-discovery


    【解决方案1】:

    好的,经过多次搜索并将我的头撞到我的桌子上,我已经让这个东西工作了。我以为我昨天可以正常工作了,但它只在 Windows 7 上工作,在 XP 上不工作..

    所以,就这样吧:

    IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, Port);
    
    UdpClient client = new UdpClient();
    client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
    client.Client.Bind(localEndPoint);
    client.JoinMulticastGroup(IPAddress);
    client.MulticastLoopback = true;
    
    Client.BeginReceive(MessageReceived, null);
    

    我当然希望记录得更好一点,但我想这就是我们能赚大钱的原因。

    感谢 StackOverflow 提供了这样一个很棒的知识库,可以从中提取这些东西!!

    【讨论】:

    • 注意:Bind 语句不能出现在 SetSocketOption 语句之前。它需要在之后。或者你得到例外。
    • 请指定PortIPAddress 的值是什么。供将来参考:stackoverflow.com/a/35799184/4454665 帮助了我
    • 端口 == 1900.IPAddress == IPAddress.Parse("239.255.255.250")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多