UDPによるデータの送受信で複数宛先を指定したい


お世話になります。
C#で、UDPによるデータの送受信で、1対1、1対Anyはできるのですが、
1対複数(IPアドレス指定)はどのようにすればよいでしょうか?

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2017/06/13 01:11:22
  • 終了:2017/06/20 01:15:03
id:mitsuo_net

具体的には以下のコードで、
mHostIp = "255.255.255.255"; //一斉同報はうまくいきます。

しかし、同報先をIPで指定する方法がわかりません。
たとえば通知先が192.168.1.100,192.168.1.101,..102,..103のように4台にだけ送信した場合、
どのようmHostIpを指定しますか?


private void SendBroadCast(string msg)
{
//送信するデータを作成する
byte[] sendBytes = System.Text.Encoding.UTF8.GetBytes(msg);

//UdpClientを作成する
if (mUdpClient == null)
{
mUdpClient = new System.Net.Sockets.UdpClient(LOCAL_PORT);
}

//非同期的にデータを送信する
mUdpClient.EnableBroadcast = true;
mUdpClient.BeginSend(sendBytes, sendBytes.Length, mHostIp, HOST_PORT, SendCallback, mUdpClient);

}

宜しくお願いします。

回答(1件)

id:a-kuma3 No.1

a-kuma3回答回数4583ベストアンサー獲得回数19232017/06/13 08:51:23

ポイント200pt

しかし、同報先をIPで指定する方法がわかりません。
たとえば通知先が192.168.1.100,192.168.1.101,..102,..103のように4台にだけ送信した場合、

一度の送信で複数の宛先に送るには、UDP のマルチキャストというのを使います。
通信には、クラスD の IPアドレスを使います。
送信側が相手を選ぶのではなく、受信側がマルチキャストの送信アドレスにつなぐ、という形になります。

"c# multicast" というキーワードでググるとサンプルが探せます。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません