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 步没有回复吗?

编辑我检查了作为 DNS 发送的 IP 地址,并将其更改为 192.168.0.1(原为 0.0.0.0),但仍然没有变化。正如我所说,我知道产品获得了 IP 地址,因为我可以 ping 它,但似乎 DNS 地址有问题。我已经确认了这一点,因为该产品有一个闪烁的红灯,我被告知这意味着 DNS 请求失败。

4

1 回答 1

0

如果我理解您的问题/问题是正确的,要全面测试所有步骤,您将不得不模拟 DHCP 服务器(我认为您已经在这样做了)、DNS 服务器,最后是产品连接的服务。

我猜您不应该测试有关 MAC 地址捕获和验证的部分,这不是您正在测试的产品的一部分。

因此,当产品从 DHCP 请求 IP 地址时,您应该确保产品也获得假 DNS 服务器的 IP 号码。然后,该 DNS 服务器(您的代码)在对主机名进行 DNS 请求时,应该将 IP 交给产品以获取另一个虚假服务。最后,您的更多代码已准备好捕获来自产品的连接请求。

然后您应该能够测试所有步骤。

于 2012-09-24T11:55:50.287 回答