在.NET中检查Internet连接的最快,最有效的方法是什么?
以编程方式检查互联网连接是否可用的最简单方法是什么?
编辑:建议我尝试使用以下方法,但它总是返回true.
[Flags]
enum InternetConnectionState : int
{
INTERNET_CONNECTION_MODEM = 0x1,
INTERNET_CONNECTION_LAN = 0x2,
INTERNET_CONNECTION_PROXY = 0x4,
INTERNET_RAS_INSTALLED = 0x10,
INTERNET_CONNECTION_OFFLINE = 0x20,
INTERNET_CONNECTION_CONFIGURED = 0x40
}
class Program
{
[DllImport("WININET", CharSet = CharSet.Auto)]
static extern bool InternetGetConnectedState(ref InternetConnectionState lpdwFlags, int dwReserved);
static void Main(string[] args)
{
InternetConnectionState flags = 0;
bool isConnected = InternetGetConnectedState(ref flags, 0);
Console.WriteLine(isConnected);
//Console.WriteLine(flags);
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
附加信息(如果有帮助):我通过共享的无线网络访问互联网.
我正在使用.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();
}
Run Code Online (Sandbox Code Playgroud)
但即使我关闭了我的本地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);
}
Run Code Online (Sandbox Code Playgroud)
但这总是给出一个例外(ping似乎只能ping服务器,所以localhost工作但localhost/myfolder/doesnt)
请问如何检查连接,以便它对我有用?
C#2008
我正在使用此代码来测试互联网连接.因为我的应用程序必须登录到Web服务器.但是,如果用户互联网连接失败或电缆拔出.我必须通知用户.
// Ping www.google.com to check if the user has a internet connection.
public bool PingTest()
{
Ping ping = new Ping();
PingReply pingStatus = ping.Send(IPAddress.Parse("208.69.34.231"));
if (pingStatus.Status == IPStatus.Success)
{
return true;
}
else
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为我可以测试互联网连接的唯一方法是ping www.google.com.所以我使用了一个服务器计时器,我设置了500毫秒,在已失效的事件中,它将调用此ping函数.如果ping返回false.然后我的应用将采取适当的行动.
您认为使用谷歌作为测试互联网连接的方式是一件好事.如果谷歌失败,那么我的应用程序将无法运行.轮询1/2秒是多少还是太少?只是想知道我的整个想法是否好?
非常感谢,
我正在C#中实现一个发现协议(DNS-SD).我有一个小问题:当我的程序运行时,我需要检测何时建立新连接(网络电缆插入或wifi连接),以便在这些网络上宣布自己.
但是如何检测呢?我已经看到一些代码来获取网卡的当前状态,但没有事件,我想避免对网卡状态进行一些轮询.
有没有办法确定XBAP(浏览器中托管的WPF)应用程序是否具有网络连接?如果没有,用C#和.NET编写的传统Windows客户端如何确定它是否具有连接性?
基本上,用例是在通过WiFi连接到Intranet的移动笔记本电脑上运行的XBAP应用程序.笔记本电脑无法连接到Internet.取决于用户当时的位置,WiFi连接可能存在也可能不存在.
我为公司开发了一个软件.出于某种许可目的,我使用远程数据库来允许/禁止使用该软件.每次用户登录软件时都会应用此任务.如果互联网连接不存在或者对远程数据库的查询失败,则用户收到错误并且他无法登录软件并显示远程数据库的http地址(我不希望他看到,如果他仔细阅读错误)
我想知道的是执行相同过程的任何方式,但如果远程数据库查询失败或Internet连接不可用,它应该暂时绕过检查,并在下次登录尝试时,遵循相同的过程.所以我的客户不应该知道这个许可的东西.
如何在创建对远程数据库的查询之前检查Internet连接(LAN,WiFi,拨号或用户正在使用的任何内容).
建议的方法:
Ping我的远程数据库服务器IP.
关于结果我从米歇尔的问题中获得的结果是不稳定的解决方案.