0

DSL モデムから送信され、UDP プロトコルを使用してポート 137 で受信されたブロードキャスト パケットから IP アドレスを取得しようとしています。接続が存在する場合、IP アドレスを読み取ることができます。

ただし、識別されていないネットワーク状態で、モデムが DHCP 用に構成され、特定の範囲の IP が許可され、マシンの設定が自動検出されている場合:

ブロードキャスト メッセージを読み取ると、マシンのデフォルトのローカル IP アドレスを取得します。それは169から始まります。

注: ブロードキャスト メッセージを受信するために、モデムを再起動しています。

Socket sock = new Socket(AddressFamily.InterNetwork,
                        SocketType.Dgram, ProtocolType.Udp);
                IPEndPoint iep = new IPEndPoint(IPAddress.Any, 137);
                sock.Bind(iep);
                EndPoint ep = (EndPoint)iep;
                int iLoopCount=0;
                while (iLoopCount <= 10000)
                {
                    Console.WriteLine("Ready to receive…");
                    byte[] data = new byte[1024];
                    int recv = sock.ReceiveFrom(data, ref ep);                    
                    string stringData = Encoding.Default.GetString(data, 0, recv);
                    Console.WriteLine("{1}: from: {0}",((IPEndPoint)ep).Address.ToString(),DateTime.Now.ToString());

                    iLoopCount++;
                   // Console.WriteLine(sock.RemoteEndPoint.ToString());
                }
                sock.Close();
                Console.Read();
4

1 に答える 1

0

http://www.codeproject.com/Articles/17031/A-Network-Sniffer-in-Cで私の質問に対する答えを見つけました

于 2013-01-31T10:42:08.963 に答える