我想使用Wininet
函数InternetCheckConnection
来检查机器何时连接到互联网,并可以访问特定的主机。 问题是这个函数总是返回false ,不pipe我放在哪个URL上。
MSDN链接
以下组合在Windows 7和Windows XP SP3上适用于我:
InternetCheckConnection("http://www.google.com", FLAG_ICC_FORCE_CONNECTION, 0) ;
如果连接可能,GetLastError()返回0,否则返回12029(连接到服务器的尝试失败)。
下面的组合不适合我:
InternetCheckConnection(NULL, FLAG_ICC_FORCE_CONNECTION, 0) ;
GetLastError()返回12016(请求的操作无效)。
InternetCheckConnection(NULL, 0, 0) ; InternetCheckConnection(("http://www.google.com", 0, 0) ;
为GetLastError()返回2250(网络连接无法找到)。
你检查过GetLastError()
吗? 如果我正确读取MSDN,则需要检查ERROR_NOT_CONNECTED
以确定您是否真正离线。
只是一个疯狂的猜测,但也许这是由于个人防火墙阻止Windows DLL和/或您的应用程序之一的所有传出连接?