Dns例外.即使它返回一个很好的结果,如果输出到消息框

本文关键字:结果 很好 如果 输出 消息 一个 例外 返回 Dns | 更新日期: 2023-09-27 18:03:07

我从主机名中获得IP:

IPAddress[] serverIp = Dns.GetHostAddresses(serverFqdn);
string firstResult = serverIp[0].ToString();

如果我在messageBox中像这样调用firstResult:

MessageBox.Show(firstResult);

弹出消息框,显示正确的IP地址。

但是,如果不是消息框,我继续使用该IP地址进行ping测试,如下所示:

Ping pingSender = new Ping();
PingReply reply = pingSender.Send(firstResult);

我得到一个'SocketException'错误代码11001没有这样的主机是已知的与DNS查询的代码行。

当dns查询在第一个场景中明显成功时,怎么会发生这种情况?

编辑:如果我在DNS查询和ping之间插入消息框,它会弹出应有的IP地址。当我取消messagebox时,代码继续ping,然后在dns查询行代码上有一个异常,它在messagebox之前执行。

这是我不明白的部分。一个方法,显然是同步执行的,并成功地产生一个异常后,下一行代码也成功地运行?

Dns例外.即使它返回一个很好的结果,如果输出到消息框

这是因为ping.send()需要一个ipaddress对象作为参数,所以您需要使用静态ipaddress .parse()方法首先获取一个ipaddress对象。然后,使用返回的对象作为Ping.send()调用的参数。

我找到了问题的原因,尽管仍然不确定为什么IDE在错误的地方显示异常。

对这个ping测试方法的一个调用发送的是IP而不是服务器名称。ping测试方法正在添加域名,然后ping测试试图使用(例如)

Ping pingSender = new Ping();
PingReply reply = pingSender.Send("192.168.1.1.domain.com");