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