note : InternetGetConnectedState
发布日期:2021-06-30 22:04:16
浏览次数:2
分类:技术文章
本文共 4113 字,大约阅读时间需要 13 分钟。
/// @file srcNetTips.cpp/// @brief 判断本机是否联网/// 如果有需要联网后,才会进行的任务. 判断是否能上网,再干活,效率高/// @ref http://www.cnblogs.com/mikespook/archive/2004/06/25/73784.html#include "stdafx.h"#include#include #include ///< for std::wstring/// for InternetGetConnectedState#include #pragma comment(lib, "Wininet.lib")// #define SWITCH_DEBUG ///< 调试开关#ifdef SWITCH_DEBUG#define DebugPrint _tprintf#else#define DebugPrint #endif/// @fn fn_IsInternetConnected/// @brief 判断本机是否联网BOOL fn_IsInternetConnected();WCHAR * b2WCHAR(BOOL bIn);int _tmain(int argc, _TCHAR* argv[]){ BOOL bNetOK = FALSE; size_t nTryCnt = 1000; ///< 1000次 size_t nTmSleep = 1000 * 3; ///< 每次睡3秒 while (nTryCnt-- > 0) { ::Sleep(nTmSleep); bNetOK = fn_IsInternetConnected(); _tprintf(L"bNetOK = %s\r\n", bNetOK ? L"TRUE" : L"FALSE"); } getwchar(); return 0;}BOOL fn_IsInternetConnected(){ BOOL bRc = FALSE; DWORD dwFlags = 0; BOOL bIs_INTERNET_CONNECTION_CONFIGURED = FALSE; BOOL bIs_INTERNET_CONNECTION_LAN = FALSE; BOOL bIs_INTERNET_CONNECTION_MODEM = FALSE; BOOL bIs_INTERNET_CONNECTION_MODEM_BUSY = FALSE; BOOL bIs_INTERNET_CONNECTION_OFFLINE = FALSE; BOOL bIs_INTERNET_CONNECTION_PROXY = FALSE; BOOL bIs_INTERNET_RAS_INSTALLED = FALSE; bRc = InternetGetConnectedState(&dwFlags, 0); DebugPrint(L"dwFlags = 0x%X\r\n", dwFlags); bIs_INTERNET_CONNECTION_CONFIGURED = (dwFlags & INTERNET_CONNECTION_CONFIGURED) > 0; bIs_INTERNET_CONNECTION_LAN = (dwFlags & INTERNET_CONNECTION_LAN) > 0; bIs_INTERNET_CONNECTION_MODEM = (dwFlags & INTERNET_CONNECTION_MODEM) > 0; bIs_INTERNET_CONNECTION_MODEM_BUSY = (dwFlags & INTERNET_CONNECTION_MODEM_BUSY) > 0; bIs_INTERNET_CONNECTION_OFFLINE = (dwFlags & INTERNET_CONNECTION_OFFLINE) > 0; bIs_INTERNET_CONNECTION_PROXY = (dwFlags & INTERNET_CONNECTION_PROXY) > 0; bIs_INTERNET_RAS_INSTALLED = (dwFlags & INTERNET_RAS_INSTALLED) > 0; DebugPrint(L"\tbIs_INTERNET_CONNECTION_CONFIGURED = %s\r\n", b2WCHAR(bIs_INTERNET_CONNECTION_CONFIGURED)); DebugPrint(L"\tbIs_INTERNET_CONNECTION_LAN = %s\r\n", b2WCHAR(bIs_INTERNET_CONNECTION_LAN)); /// 用猫拨号上网 DebugPrint(L"\tbIs_INTERNET_CONNECTION_MODEM = %s\r\n", b2WCHAR(bIs_INTERNET_CONNECTION_MODEM)); DebugPrint(L"\tbIs_INTERNET_CONNECTION_MODEM_BUSY = %s\r\n", b2WCHAR(bIs_INTERNET_CONNECTION_MODEM_BUSY)); DebugPrint(L"\tbIs_INTERNET_CONNECTION_OFFLINE = %s\r\n", b2WCHAR(bIs_INTERNET_CONNECTION_OFFLINE)); DebugPrint(L"\tbIs_INTERNET_CONNECTION_PROXY = %s\r\n", b2WCHAR(bIs_INTERNET_CONNECTION_PROXY)); /// 远程访问功能是否已经安装 DebugPrint(L"\tbIs_INTERNET_RAS_INSTALLED = %s\r\n", b2WCHAR(bIs_INTERNET_RAS_INSTALLED)); return ( bRc && bIs_INTERNET_RAS_INSTALLED && bIs_INTERNET_CONNECTION_CONFIGURED); /** /// 能访问网页时 dwFlags = 0x51 bIs_INTERNET_CONNECTION_CONFIGURED = TRUE bIs_INTERNET_CONNECTION_LAN = FALSE bIs_INTERNET_CONNECTION_MODEM = TRUE bIs_INTERNET_CONNECTION_MODEM_BUSY = FALSE bIs_INTERNET_CONNECTION_OFFLINE = FALSE bIs_INTERNET_CONNECTION_PROXY = FALSE bIs_INTERNET_RAS_INSTALLED = TRUE /// 不能访问网页时 /// case 将宽带链接用软件断掉 dwFlags = 0x12 bIs_INTERNET_CONNECTION_CONFIGURED = FALSE bIs_INTERNET_CONNECTION_LAN = TRUE bIs_INTERNET_CONNECTION_MODEM = FALSE bIs_INTERNET_CONNECTION_MODEM_BUSY = FALSE bIs_INTERNET_CONNECTION_OFFLINE = FALSE bIs_INTERNET_CONNECTION_PROXY = FALSE bIs_INTERNET_RAS_INSTALLED = TRUE /// 不能访问网页时 /// case 禁掉本地链接 或 拔掉本地计算机端的网线 dwFlags = 0x10 bIs_INTERNET_CONNECTION_CONFIGURED = FALSE bIs_INTERNET_CONNECTION_LAN = FALSE bIs_INTERNET_CONNECTION_MODEM = FALSE bIs_INTERNET_CONNECTION_MODEM_BUSY = FALSE bIs_INTERNET_CONNECTION_OFFLINE = FALSE bIs_INTERNET_CONNECTION_PROXY = FALSE bIs_INTERNET_RAS_INSTALLED = TRUE */}WCHAR * b2WCHAR(BOOL bIn){ /// @todo 多线程时,换用TLS的变量 static std::wstring strRc; strRc = bIn ? L"TRUE" : L"FALSE"; return (WCHAR *)strRc.c_str();}
转载地址:https://lostspeed.blog.csdn.net/article/details/16371091 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月23日 00时52分04秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Django + REST学习笔记
2019-04-30
【转载】将Ubuntu16.04 中gedit在仅显示一个文件时显示文件名tab
2019-04-30
fstream 对象多次使用时注意clear
2019-04-30
调试 LenaCV 3D Camera (Linux)
2019-04-30
OpenCV杂记 - Mat in C++
2019-04-30
lnmp部署
2019-04-30
location区段
2019-04-30
nginx访问控制、基于用户认证、https配置
2019-04-30
用zabbix监控nginx
2019-04-30
SaltStack
2019-04-30
linux内存的寻址方式
2019-04-30
ubunut16.04的pip3出现问题,重新安装pip3
2019-04-30
how2heap-double free
2019-04-30
how2heap-fastbin_dup_consolidate
2019-04-30
orw_shellcode_模板
2019-04-30
[fmt+shellcode]string
2019-04-30