WAN (192.168.1.x) に接続された複数の LAN (10.0.0.x) があります。それぞれ、ネットワーク ダイレクト ブロードキャストを許可するルーターを経由します。これは、LAN 内のデバイスが WAN 上のデバイスによって検出されるようにするためです。
LAN(10.0.0.255)でブロードキャストを送信し、ソケットで受信できます。しかし、WAN に移動すると、wireshark で確認できますが、ソケットでは確認できません。つまり、アドレス 10.0.0.1 のデバイスが同じメッセージをゲートウェイ経由で 192.168.1.255 に送信していますが、ソケットがそれを受信していません。これが発生すると、送信元アドレスはルーターのアドレスになります。これが私のソケットのコードです:
udpSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
//Assign the any IP of the machine and listen on port number 5000
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 5000);
//Bind this address to the server
udpSocket.Bind(ipEndPoint);
IPEndPoint ipeSender = new IPEndPoint(IPAddress.Any, 5000);
//The epSender identifies the incoming clients
EndPoint epSender = (EndPoint)ipeSender;
//Start receiving data
udpSocket.BeginReceiveFrom(byteData, 0, byteData.Length,
SocketFlags.None, ref epSender, new AsyncCallback(ReceiveAnnounce), epSender);
各メッセージの Wireshark トレースがありますが、投稿する最善の方法がわかりません。ありがとう。