4

3 台のラップトップで小さなローカル ネットワークをセットアップしています。私の目標は、UpNP プロトコルを試して、UpNP を使用してラップトップがお互いを検出できるようにすることです。これを行うには、お互いからの通知をリッスンできる必要があります。プロトコルに従って、これらの通知はマルチキャスト アドレス 239.255.255.250:1900 で送信されます。ただし、そのアドレスでリッスンするようにラップトップを設定する際に問題があります。私は1台のPCを使い始めています。私の PC の IP アドレスは 10.0.0.5 です。

ただし、239.255.255.250:1900 でリッスンするように UdpClient を設定しようとすると、「要求されたアドレスはそのコンテキストでは無効です」というエラーが表示されます。

私はこれを使ってセットアップしようとしました:

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);

しかし、「要求されたアドレスはそのコンテキストでは無効です」という同じエラーが表示されます。

マルチキャスト アドレス 239.255.255.250:1900 をリッスンするように UdpClient を正しく設定するにはどうすればよいですか?

ご協力いただきありがとうございます!!!

4

1 に答える 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に感謝します!!

于 2013-01-02T17:11:44.043 に答える