C#检查远程服务器

Kan*_*ane 17 .net c#

如果有远程服务器,有人可以建议检查(使用.NET 3.5)的最佳方法吗?

我正在考虑使用以下代码,但想知道如果社区有另一种选择,是否存在更好的方法.

TcpClient client = new TcpClient("MyServer", 80);
if (!client.Connected)
{
    throw new Exception("Unable to connect to MyServer on Port 80");
}
client.Close();
Run Code Online (Sandbox Code Playgroud)

Dan*_*n F 26

你可以ping

您可以从中下载默认页面

你可以做一个HEAD请求

如果它是您网络上的本地IIS6服务器,并且您有一些管理员详细信息,则可以使用某些DirectoryEntry代码连接到IIS

136615上的一些答案可能有所帮助,特别是关于套接字的公认答案

对于打印服务器(或,具体,打印机),用K斯科特的代码在这里可能会有帮助.无论如何都要使用这个有趣的代码:-)该代码提到了dns.resolve,它被废弃并被Dns.GetHostEntry取代

我是出于好主意:-)

  • 我从这篇文章中学到了很多东西.真诚的,克里斯. (2认同)

Nol*_*rin 8

如果您只是想查看给定服务器是否在线,那么在大多数情况下,简单的ping应该可以完成工作.

PingReply pingReply;
using (var ping = new Ping())
    pingReply = ping.Send("http://www.stackoverflow.com/");
var available = pingReply.Status == IPStatus.Success;
Run Code Online (Sandbox Code Playgroud)

使用此方法,您也不会以任何方式滥用HTTP服务器.

否则(如果你想检查特定端口上是否可以连接),那基本上看起来很好.

  • 不可否认,我不在公司网络上工作,但我没有看到在我有权访问的任何较大的学术机构网络上阻止ping.这可能是因为网络管理员经常使用ping来检查网络连接 (2认同)