我不确定在开始ping之前是否可以检查,因为程序如何判断它是否是有效的主机名?
问题是Ping();可以返回各种错误消息,我只想确定答案是否是:
- " Ping请求找不到主机HOSTNAME。请检查姓名,然后重试。"因此,如果主机名根本不存在,则
- 来自"的回复#34;所以,如果电脑打开,
- "目标主机无法访问。"所以,如果有这样的主机名,但它是离线的,
- 如果有任何其他错误。
由于某种原因,这对我来说并不是很好。
try
{
var address = Dns.GetHostEntry(inputText.Text).AddressList.First();
string returnMessage = string.Empty;
PingOptions pingOptions = new PingOptions(128, true);
Ping ping = new Ping();
byte[] buffer = new byte[32];
for (int i = 0; i < 1; i++)
{
try
{
PingReply pingReply = ping.Send(address, 1000, buffer, pingOptions);
if (!(pingReply == null))
{
switch (pingReply.Status)
{
break;
case IPStatus.TimedOut:
returnMessage = "Connection has timed out...";
break;
default:
returnMessage = string.Format("Ping failed: {0}", pingReply.Status.ToString());
break;
}
}
else
returnMessage = "Connection failed for an unknown reason...";
}
catch (PingException ex)
{
returnMessage = string.Format("Connection Error: {0}", ex.Message);
}
catch (SocketException ex)
{
returnMessage = string.Format("Connection Error: {0}", ex.Message);
}
}
}
catch (ArgumentNullException f)
{
//errormessage here
}
catch (Exception f)
{
//errormessage here
}
或者这实际上是在处理所有案例,例如找不到主机名,离线,在线等其他错误?如果知道哪个案例/错误/异常是哪个,那就太棒了。
谢谢!