C#简单的DHCP服务器,DNS请求?

时间:2012-09-24 11:31:52

标签: c# dhcp

我正为我公司的新产品编写一套新的测试设备。

其中一项测试是以太网测试,我被告知会像这样测试。

  1. 产品通过以太网连接后,将使用DHCP协议请求IP地址。
  2. 将捕获并验证MAC地址。
  3. 为产品提供IP地址。
  4. 现在,产品请求主机名“something.something.something.se”
  5. 的IP地址
  6. 必须检查并验证主机名。
  7. DNS服务器发回主机名的IP地址。
  8. 然后,产品将与给定的IP地址建立TCP连接。
  9. 我的问题是我从产品收到DHCP Discovery消息,然后我回复。然后,我收到IP地址的DHCP请求消息(步骤1)。我发回一个IP地址,然后我不再听到产品了。

    如果我在我给的IP地址上打了产品,我会得到回复,所以我知道产品已经收到并设置了它的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)但仍未更改。正如我所说,我知道产品获得了IP地址,因为我可以ping它,但它似乎有DNS地址的问题。我已经确认这一点,因为该产品有一个闪烁的红灯,我被告知意味着DNS请求失败。

1 个答案:

答案 0 :(得分:0)

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

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

因此,当产品从DHCP请求IP地址时,您应确保产品获得虚假DNS服务器的IP号。当DNS服务器(您的代码)在主机名上发出DNS请求时,应将产品的IP交给另一个虚假服务。最后,您的一些代码已准备好从产品中捕获连接请求。

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