奇怪的 C# Ping 异常

Weird C# Ping Exception

我的 C# 应用程序遇到了一个非常烦人的问题。出于某种原因,此代码导致 System.Net.Sockets.SocketException 结果: "No such host is known." 和 'connected' 始终为假。

bool connected;

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

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

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

Ping does not use the HTTP protocol, it uses ICMP。将代码更改为以下内容将解决您的问题

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