【问题标题】:Knowing when machine is connected to Internet (Event) [duplicate]知道机器何时连接到互联网(事件)[重复]
【发布时间】:2013-05-23 20:56:17
【问题描述】:

我正在创建一个 Win Forms 应用程序 (C#)。我需要让它 24/7 全天候运行,并在连接到 Internet 时提交一些 XML 数据。

我知道一些方法可以持续 ping 一个稳定的域以检查系统是否连接到 Internet。

但我正在寻找更好或更优雅的方式来做同样的事情。我有一些提示,我可能能够捕获一些套接字事件。请帮我出出主意。

【问题讨论】:

  • 尝试连接你的socket并成功发送数据,你也可以触发一些事件,但没关系,只要重试连接,如果连接发送。
  • 您想响应网络可用性的变化吗?在这种情况下,NetworkAvailabilityChanged 可能会引起人们的兴趣。

标签: c# .net winforms forms sockets


【解决方案1】:

见:How to test if Webbrowser gets a connection error when navigating to a new URL?

[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState( out int Description, int ReservedValue );

//Creating a function that uses the API function...
public static bool IsConnectedToInternet( )
{
    int Desc ;
    return InternetGetConnectedState( out Desc, 0 ) ;
}
}

您可以获取更多关于函数here的信息。

【讨论】:

  • 谢谢,但这对我有用 :) NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged)‌​;
  • 这也很方便!对于某些应用程序,您可能会考虑组合方法 - 例如,当网络可用性发生变化时,您的应用程序可能尚未运行,因此需要在侦听其他事件之前进行初始检查。无论如何,很高兴你找到了有用的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多