我从主机名获得一个IP,如下所示:
IPAddress[] serverIp = Dns.GetHostAddresses(serverFqdn);
string firstResult = serverIp[0].ToString();如果我调用messageBox中的firstResult,如下所示:
MessageBox.Show(firstResult);消息框弹出,显示正确的IP地址。
但是,如果我继续使用IP地址进行ping测试,而不是使用messagebox,则如下所示:
Ping pingSender = new Ping();
PingReply reply = pingSender.Send(firstResult);我得到一个'SocketException‘,错误代码为11001,没有这样的主机与DNS查询的代码行相关。
当dns查询在第一个场景中明显成功时,怎么会发生这种情况呢?
编辑:如果我在DNS查询和ping之间插入消息框,它会像应该的那样弹出IP地址。当我关闭messagebox时,代码进入ping,然后在dns查询代码行上出现异常,它在messagebox之前执行。
这就是我不明白的地方。在下一行代码也成功运行之后,如何才能清楚地同步并成功地执行一个方法来生成异常呢?
发布于 2015-07-17 19:05:06
这是因为ping.send()需要一个IPAdress对象作为参数,因此您需要首先使用静态IPAdress.parse()方法来获取IPAdress对象。然后,使用返回的对象作为Ping.send()调用的参数。
发布于 2015-07-17 20:08:44
我找到了问题的原因,尽管仍然不确定为什么IDE在错误的位置显示异常。
对此ping测试方法的调用之一是在IP而不是服务器名称中发送。ping测试方法是附加域名,然后ping测试尝试使用(例如)
Ping pingSender = new Ping();
PingReply reply = pingSender.Send("192.168.1.1.domain.com");https://stackoverflow.com/questions/31474227
复制相似问题