我正为我公司的新产品编写一套新的测试设备。
其中一项测试是以太网测试,我被告知会像这样测试。
我的问题是我从产品收到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请求失败。
答案 0 :(得分:0)
如果我理解您的问题/问题是正确的,要完全测试所有步骤,您将不得不模拟DHCP服务器(您已经在做我想的那样),DNS服务器,最后是产品连接到的服务
我猜你不应该测试关于MAC地址捕获和验证的部分,这不是你正在测试的产品的一部分。
因此,当产品从DHCP请求IP地址时,您应确保产品获得虚假DNS服务器的IP号。当DNS服务器(您的代码)在主机名上发出DNS请求时,应将产品的IP交给另一个虚假服务。最后,您的一些代码已准备好从产品中捕获连接请求。
然后你应该能够测试所有步骤。