首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自Dns.GetHostAddress的异常,即使它在输出到消息框时返回一个好结果

来自Dns.GetHostAddress的异常,即使它在输出到消息框时返回一个好结果
EN

Stack Overflow用户
提问于 2015-07-17 18:56:21
回答 2查看 302关注 0票数 0

我从主机名获得一个IP,如下所示:

代码语言:javascript
复制
IPAddress[] serverIp = Dns.GetHostAddresses(serverFqdn);
string firstResult = serverIp[0].ToString();

如果我调用messageBox中的firstResult,如下所示:

代码语言:javascript
复制
MessageBox.Show(firstResult);

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

但是,如果我继续使用IP地址进行ping测试,而不是使用messagebox,则如下所示:

代码语言:javascript
复制
Ping pingSender = new Ping();
PingReply reply = pingSender.Send(firstResult);

我得到一个'SocketException‘,错误代码为11001,没有这样的主机与DNS查询的代码行相关。

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

编辑:如果我在DNS查询和ping之间插入消息框,它会像应该的那样弹出IP地址。当我关闭messagebox时,代码进入ping,然后在dns查询代码行上出现异常,它在messagebox之前执行。

这就是我不明白的地方。在下一行代码也成功运行之后,如何才能清楚地同步并成功地执行一个方法来生成异常呢?

EN

回答 2

Stack Overflow用户

发布于 2015-07-17 19:05:06

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

票数 0
EN

Stack Overflow用户

发布于 2015-07-17 20:08:44

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

对此ping测试方法的调用之一是在IP而不是服务器名称中发送。ping测试方法是附加域名,然后ping测试尝试使用(例如)

代码语言:javascript
复制
Ping pingSender = new Ping();
PingReply reply = pingSender.Send("192.168.1.1.domain.com");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31474227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档