奇怪的 C# ping 异常

本文关键字:ping 异常 | 更新日期: 2023-09-27 18:31:38

我在C#应用程序中遇到了一个非常烦人的问题。由于某种原因,此代码导致System.Net.Sockets.SocketException,结果如下:"不知道这样的主机",而"连接"总是假的。

bool connected;
try {
    Ping pinger = new Ping();
    PingReply reply = pinger.Send("http://www.google.com", 15000);
    connected = reply != null && reply.Status == IPStatus.Success;
} catch {
}

奇怪的是,使用命令提示符和 http 请求执行 ping 都会导致成功。有谁知道为什么这段代码失败了?

奇怪的 C# ping 异常

它失败了,因为它将http://作为主机名的一部分,而不是协议。

Ping不使用HTTP协议,它使用ICMP。将代码更改为以下内容将解决您的问题

Ping pinger = new Ping();
PingReply reply = pinger.Send("www.google.com", 15000);