会社の新製品用に新しいテスト機器をプログラミングしています。
テストの 1 つはイーサネット テストで、このようにテストすると言われています。
- 製品がイーサネット経由で接続されると、DHCP プロトコルを使用して IP アドレスを要求します。
- MAC アドレスを取得して検証する必要があります。
- 製品にはIPアドレスが付与されています。
- ここで、製品はホスト名「something.something.something.se」の IP アドレスを要求します。
- ホスト名を確認して検証する必要があります。
- DNS サーバーは、ホスト名の IP アドレスを返します。
- その後、製品は指定された IP アドレスへの TCP 接続を確立します。
問題は、製品から DHCP 検出メッセージを受信し、応答することです。次に、IP アドレスの DHCP 要求メッセージを受け取ります (ステップ 1)。IP アドレスを送り返しましたが、製品から何も聞こえません。
指定した IP アドレスで製品を PING すると、応答が返ってくるので、製品が IP アドレスを受信して設定したことがわかります。
私は UdpClient を使用して通信を行っており、そのように設定されています
IPEndPoint ProductEndPoint = new IPEndPoint(IPAddress.Any, 0);
UdpClient host = new UdpClient();
host.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
host.Client.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.1"), 67)); //192.168.0.1 is ip address of PC
for(int i = 0; i < 30; i++)
{
if (host.Available > 0)
{
byte[] Data = host.Receive(ref ProductEndPoint);
// Do something with the data
}
else
Thread.Sleep(1000);
}
ステップ 4 で応答がない理由を教えてください。
EDIT DNSとして送信されているIPアドレスを確認し、192.168.0.1(0.0.0.0でした)に変更しましたが、まだ変更されていません。私が言ったように、私はそれをpingできるので、製品がIPアドレスを取得したことを知っていますが、DNSアドレスに問題があるようです. 製品の赤いライトが点滅していることを確認しましたが、これは DNS 要求が失敗したことを示しているとのことです。