【发布时间】:2011-03-23 13:24:48
【问题描述】:
我正在使用 .NET、C# 和 WPF,我需要检查是否打开了到某个 URL 的连接,但我在 Internet 上找到的任何代码都无法运行。
我试过了:
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
IAsyncResult result = socket.BeginConnect("localhost/myfolder/", 80, null, null);
bool success = result.AsyncWaitHandle.WaitOne(3000, true);
if (!success)
{
MessageBox.Show("Web Service is down!");
}
else
MessageBox.Show("Everything seems ok");
}
finally
{
socket.Close();
}
但即使我关闭了本地 Apache 服务器,我总是会收到一切正常的消息。
我也试过了:
ing ping = new Ping();
PingReply reply;
try
{
reply = ping.Send("localhost/myfolder/");
if (reply.Status != IPStatus.Success)
MessageBox.Show("The Internet connection is down!");
else
MessageBox.Show("Seems OK");
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
但这总是会出现异常(ping 似乎只能 ping 服务器,所以 localhost 有效,但 localhost/myfolder/ 没有)
请问如何检查连接以便它对我有用?
【问题讨论】:
-
您是否正在尝试验证您的连接是否正常(在这种情况下 Ping 可以工作),或者某个 URL 是否可以访问?
-
您是否只需要检查 Internet 连接是否已启动,或者您的特定 Web 服务是否已启动并正在运行?它们可能是两种不同的东西。
-
某个特定的 Web 服务已启动并正在运行
-
您只是在检查连接是否最终结束。
-
您打算使用什么样的网络服务?我怀疑是否有一种通用方法可以检查所有 Web 服务类型
标签: c# .net wpf connection