首页 文章

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

提问于
浏览
1

我正在为我公司的新产品编写一个新的测试设备 .

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

  • 一旦产品通过以太网连接,它将使用DHCP协议请求IP地址 .

  • 将捕获并验证MAC地址 .

  • 为产品提供IP地址 .

  • 现在产品请求主机名的IP地址"something.something.something.se"

  • 必须检查并验证主机名 .

  • DNS服务器发回主机名的IP地址 .

  • 然后,产品将与给定的IP地址 Build TCP连接 .

我的问题是我从产品收到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步没有回复吗?

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

1 回答

  • 0

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

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

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

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

相关问题