1

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 トレースがありますが、投稿する最善の方法がわかりません。ありがとう。

4

1 に答える 1