【问题标题】:How to detect datacard connect and disconnect event on win32?如何在win32上检测数据卡连接和断开事件?
【发布时间】:2010-11-06 14:33:26
【问题描述】:

我有一张数据卡,只要我插入数据卡,我就会使用 wm_device_change 事件来获取事件。

但我也想得到事件,当我的数据连接实际连接到外部世界时。

我的意思是说,只要我们点击数据卡的连接/断开按钮,我想得到事件。换句话说,我想知道连接何时建立和断开。

数据卡是 Vodaphone 数据卡,我正在尝试使用该数据卡进行浏览。无论 SDK 是什么,操作系统应该在某个地方获得连接和断开网络的事件是否有任何方法可以访问操作系统正在获得的事件。正如我在通知中看到的 Vodaphone 连接和 LAN 连接的变化。

数据卡是一种内置SIM卡的USB设备,可以通过GPRS上网。

如何在 Win32 C/C++ 程序中做到这一点?

【问题讨论】:

    标签: c++ c winapi networking network-programming


    【解决方案1】:

    要检测网络变化,你可以使用NotifyAddrChange(0,0); 因为这是阻塞的,你需要一个线程。线程函数可以简单到

    while(true) {
      NotifyAddrChange(0,0);
      PostMessage(gHWnd, WM_APP,0,0);
    }
    

    不要打扰记录在案的异步行为。那根本行不通。

    【讨论】:

      【解决方案2】:

      这当然取决于您的“数据卡”sdk 或驱动程序以及它们是否支持此类事件。

      否则我的建议是,当您在 SDK 中调用“连接”或“断开连接”方法时,您可以使用任何指示成功或其他方式的返回值来引发您自己的事件。

      在不知道这张数据卡是什么以及它连接到什么的情况下,我看不出我们如何才能更全面地回答您的问题。

      【讨论】:

      • 数据卡是vodaphone数据卡,我正在尝试使用该数据卡进行浏览。 SDK是什么,操作系统应该在某个地方获得连接和断开网络的事件是否有任何方法可以访问操作系统正在获得的事件。正如我在通知中看到的vodaphone连接和LAN连接的变化,
      • 请将其添加到您的原始帖子中。请注意,沃达丰是一家电信提供商,因此这很可能是一张“网卡”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 2012-02-11
      • 1970-01-01
      • 2012-11-03
      • 2011-05-26
      相关资源
      最近更新 更多