如何在 C# 中正确设置我的 UdpClient 以侦听多播地址 239.255.255.250:1900

问题描述 投票:0回答:1

我正在用 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?

感谢您的帮助!!!

c# notify service-discovery udpclient upnp
1个回答
3
投票

好吧,经过大量搜索并用我的头撞到我的桌子上,我已经让这个东西工作了。我以为我昨天让它工作了,但它只适用于 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 提供了如此棒的知识库,可以从中提取这些东西!!

© www.soinside.com 2019 - 2024. All rights reserved.