我正在为我公司的新产品编写新的测试设备。
其中一项测试是以太网测试,有人告诉我会这样测试。
- 一旦产品通过以太网连接,它将使用 DHCP 协议请求 IP 地址。
- MAC 地址将被捕获和验证。
- 为产品提供 IP 地址。
- 现在产品请求主机名“something.something.something.se”的 IP 地址
- 必须检查和验证主机名。
- DNS 服务器发回主机名的 IP 地址。
- 然后产品将与给定的 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 请求失败。