奇怪的C#Ping异常

时间:2016-01-24 23:02:58

标签: c# sockets ping

我在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操作都会导致成功。有谁知道为什么这段代码失败了?

1 个答案:

答案 0 :(得分:4)

它失败了,因为它将Ping pinger = new Ping(); PingReply reply = pinger.Send("www.google.com", 15000); 作为主机名的一部分,而不是协议。

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

var poly = new google.maps.Polygon({
                            clickable: true,
                            paths: pts,
                            strokeColor: '#000000',
                            strokeOpacity: 0.3,
                            strokeWeight: 1,
                            fillColor: colour,
                            fillOpacity: 0.8,
                            title: name
                        });
                        polys.push(poly);
                        poly.setMap(map);