尽管实现起来相当简单,但我认为ping命令在您要实现的目标的上下文中没有用。
正如 Fredrik 指出的那样,ping 仅表明服务器可用。它没有说明单个网站是否在该服务器上正常运行。
如果我这样做,我会创建一个经常运行的服务。该服务将向网站发出一个获取请求,对内容进行一些解析以确保返回的内容是预期的,并更新数据库中的一条记录,说明连接时间和状态(上/下)。
例如:
public String CheckSite(String postLocation) {
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(postLocation);
// Setting the useragent seems resolves certain issues that *may* crop up depending on the server
httpRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
httpRequest.KeepAlive = false;
httpRequest.Method = "GET";
using ( HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse() ) {
using ( StreamReader reader = new StreamReader(httpResponse.GetResponseStream()) ) {
result = reader.ReadToEnd();
} // using reader
} // using httpResponse
return result;
}
这个简单的调用将从服务器加载页面。从那里你可以解析看看你是否有像“错误”这样的词或者你有什么。如果它看起来不错,那么您报告该站点已启动。
我知道上面是 C#,但如果需要,您应该能够轻松地将其转换为 VB。您还应该尝试 .. 接听电话。如果它出错,那么您知道服务器完全脱机。如果页面返回,但包含“错误”或其他内容,那么您知道服务器已启动但应用程序已关闭。