1

会社の新製品用に新しいテスト機器をプログラミングしています。

テストの 1 つはイーサネット テストで、このようにテストすると言われています。

  1. 製品がイーサネット経由で接続されると、DHCP プロトコルを使用して IP アドレスを要求します。
  2. MAC アドレスを取得して検証する必要があります。
  3. 製品にはIPアドレスが付与されています。
  4. ここで、製品はホスト名「something.something.something.se」の IP アドレスを要求します。
  5. ホスト名を確認して検証する必要があります。
  6. DNS サーバーは、ホスト名の IP アドレスを返します。
  7. その後、製品は指定された 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 要求が失敗したことを示しているとのことです。

4

1 に答える 1

0

If I understand your question/problem correct, to fully test all steps, you would have to mock a DHCP server (you're already doing that I think), a DNS server, and finally the service the product is connecting to.

I'm guessing you shouldn't test the part about the MAC address capture and validate, that's not part of the product you're testing.

So when the product requests a IP address from the DHCP, you should make sure the product get an IP number for a fake DNS server too. That DNS server (your code) should then hand the product the IP for yet another fake service when it does a DNS request on the hostname. And finally some more of your code is ready to capture the connection request from the product.

Then you should be able to test all steps.

于 2012-09-24T11:55:50.287 に答える