VC:检测网络连接的方法
方法一:
#include "stdafx.h"
#include "windows.h"
#include <Sensapi.h>
#include <iostream>
#include <Wininet.h> #pragma comment(lib, "Sensapi.lib")
#pragma comment(lib, "Wininet.lib") using namespace std; int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
BOOL isConnect;
DWORD dw;
isConnect = ::IsNetworkAlive( &dw );
while ()
{
if(isConnect)
cout << "IsNetworkAlive连接" <<endl;
else
cout << "IsNetworkAlive未连接" <<endl;
cout<< "---------------------------------" <<endl; DWORD dw2;
BOOL ret = InternetGetConnectedState(&dw2, );
if (ret)
cout << "InternetGetConnectedState连接" <<endl;
else
cout << "InternetGetConnectedState未连接" <<endl;
cout<< "**********************************" <<endl; BOOL bConnected = InternetCheckConnection(_T("http://www.baidu.com"), FLAG_ICC_FORCE_CONNECTION, );
if (bConnected)
cout << "InternetCheckConnection连接" <<endl;
else
cout << "InternetCheckConnection未连接" <<endl;
cout<< "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" <<endl; //IsDestinationReachable(_T("http://www.google.com"), ) cout<<endl<<endl<<endl;
Sleep(); }
getchar();
return ;
}
方法二:
// Connect to www.baidu.com.
HINTERNET hConnect = InternetConnect(hSession,
"www.baidu.com",
INTERNET_INVALID_PORT_NUMBER,
"",
"",
INTERNET_SERVICE_HTTP,
,
); // Request the file /index.php from the server.
HINTERNET hUrl = HttpOpenRequest(hConnect,
"GET",
"/index.php",
HTTP_VERSION,
NULL,
,
INTERNET_FLAG_DONT_CACHE,
); // Add request headers
TCHAR szHeaders[] = "Accept: text/*\r\n";
BOOL bAddHeaders = HttpAddRequestHeaders(hConnect,
szHeaders,
lstrlen(szHeaders),
HTTP_ADDREQ_FLAG_ADD); // Send the request.
BOOL bSendRequest = HttpSendRequest(hUrl, NULL, , , ); if(hUrl == NULL)
{
printf("InternetOpenUrl Error......\n");
InternetCloseHandle(hSession);
return ;
} BOOL bRet = HttpQueryInfo(hUrl, HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatusCode, &dwSizeOfStatusCode, NULL);
if(!bRet)
{
printf("HttpQueryInfo Error......\n");
return ;
} // Key point
if( == dwStatusCode)
{
InternetCloseHandle(hUrl) ;
InternetCloseHandle(hSession) ;
return ;
}
方法三:
//本机网络连接类型(成功)
#define NET_TYPE_RAS_DIAL_UP_CONNECT_NET 0x01 //上网类型:采用RAS拨号连接上网 0x01
#define NET_TYPE_LAN_CONNECT_NET 0x02 //上网类型:采用网卡通过局域网上网 0x02
#define NET_TYPE_PROXY_CONNECT_NET 0x04 //上网类型:使用代理服务器上网 0x04
#define NET_TYPE_RAS_INSTALL 0x10 //RAS安装 0x10 //本机网络连接(失败)
#define NET_TYPE_NO_CONNECT_NET 0x41 //未连接到网络
#define NET_STATE_VALID_CONNECT_NOCONNECT_NET 0x40 //可以联网,但当前不可用 0x40
#define NET_STATE_MODEM_BUSY 0x08 //调制解调器 繁忙 0x08
#define NET_STATE_SYSTEM_OFFLINE_MODE 0x20 //系统脱机模式 0x20 CheckNet()
{
if(!InternetGetConnectedState(&dwOnline, ))
{
if (dwOnline & INTERNET_CONNECTION_CONFIGURED )
{
return NET_STATE_VALID_CONNECT_NOCONNECT_NET;
}
if (dwOnline & INTERNET_CONNECTION_MODEM_BUSY)
{
return NET_STATE_MODEM_BUSY;
}
if (dwOnline & INTERNET_CONNECTION_OFFLINE)
{
return NET_STATE_SYSTEM_OFFLINE_MODE;
} return NET_TYPE_NO_CONNECT_NET;
} if ( dwOnline& INTERNET_CONNECTION_MODEM ) //上网类型:采用RAS拨号连接上网
{
return NET_TYPE_RAS_DIAL_UP_CONNECT_NET;
} else if ( dwOnline&INTERNET_CONNECTION_LAN ) //上网类型:采用网卡通过局域网上网
{
return NET_TYPE_LAN_CONNECT_NET;
} else if ( dwOnline& INTERNET_CONNECTION_PROXY) //在线:代理
{
return NET_TYPE_PROXY_CONNECT_NET;
} else if ( dwOnline&INTERNET_CONNECTION_MODEM_BUSY ) //MODEM被其他非INTERNET连接占用
{
return NET_TYPE_RAS_INSTALL;
}
}
VC:检测网络连接的方法的更多相关文章
- iOS开发 - Swift实现检测网络连接状态及网络类型
一.前言 在移动开发中,检测网络的连接状态尤其检测网络的类型尤为重要.本文将介绍在iOS开发中,如何使用Swift检测网络连接状态及网络类型(移动网络.Wifi). 二.如何实现 Reachabili ...
- [Swift通天遁地]四、网络和线程-(6)检测网络连接状态
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Delphi检测网络连接状态
有时候,我们做一些小软件就需要检测网络连接状态,比如想给你的软件加上类似QQ那样的系统消息,可是像我这样的穷人肯定是买不起服务器了,那我们只好另想办法,可以读取网页然后用浏览器显示,这个时候就需要判断 ...
- Window检测网络连接情况
Window检测网络连接情况 #include "Wininet.h" #pragma comment(lib,"Wininet.lib") DWORD fla ...
- 使用java检测网络连接状况
windows中可以通过在cmd中使用ping命令来检测网络连接状况,如下: 网络连接正常时: 网络未连接时: 在java中可以通过调用ping命令来判断网络是否连接正常: package modul ...
- Android检测网络连接
Android检测网络连接 import android.app.AlertDialog; import android.content.Context; import android.content ...
- Android 检测网络连接状态
Android连接网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置. 首先,要判断网络状态,需要有相应的权限,下面为权限代码(Androi ...
- iOS检测网络连接状态
官方Demo下载地址:https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip 将Reachab ...
- android检测网络连接状态示例讲解
网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置 Android连接首先,要判断网络状态,需要有相应的权限,下面为权限代码(Andro ...
随机推荐
- C++结构体、类和对象
在C++中结构体(struct)和类(class)可以通用,[结构体是一种特殊的类] struct和class的区别:访问和控制. struct在缺省值的情况下可以是public在外部被访问到对于类来 ...
- Mysterious Crime CodeForces - 1043D (哈希)
大意: 给定m个n排列, 求有多少个公共子串. 枚举每个位置, hash求出最大匹配长度. #include <iostream> #include <sstream> #in ...
- QT获取屏幕分表率(PC、安卓)
QRect screenRect = QGuiApplication::primaryScreen()->geometry(); double devicePixelRatio = QGuiAp ...
- JavaScript例子1-给网页中所有<p>元素添加onclick事件
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- maven:无效的目标发行版:11
maven:无效的目标发行版:11 我之前在博客里是不记录bug和error的处理的,昨天听了一个资深程序员的视频,决定要改习惯了,记录一些自己平时遇到的问题 这个是我在mvn clean insta ...
- Linux中的sudoer详解
目录 Linux中的sudo详解 一.引言 二.格式 三./etc/sudoers文件 四.sudoers文件讲解 五.其他 Linux中的sudo详解 一.引言 Liunx用户只有两类: 管理员用户 ...
- Delphi 媒体播放器控件
樊伟胜
- linux wireless 基础知识 MAC80211 CFG80211
转:http://blog.csdn.net/liuxd3000/article/details/23761663 1. 基本概念 • cfg80211: 用于对无线设备进行配置管理.与Full ...
- Binlog_master
二进制日志 记录导致数据改变或潜在导致数据改变的SQL语句 记录已提交的日志 不依赖于存储引擎类型 功能:通过"重放"日志文件中的事件来生成数据副本 注意:建议二进制日志和数据文件 ...
- LNMP安装与配置之MySQL
MySQL 是最流行的关系型数据库管理系统之一,今天的安装是在CentOS7环境下进行安装,安装的版本是MySQL5.7,有需要别的版本可点击 官网. 一.安装 1.配置YUM源 # 下载mysql ...