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 ...
随机推荐
- ARST第三周打卡
Algorithm : 做一个 leetcode 的算法题 //二位数组查找 题目描述 //在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺 ...
- 通过using声明改变个别成员的可访问性
C++的语法中通过在派生类中使用using声明可以忽略继承方式 , 而让派生类对于基类的私有和保护成员具有特殊的访问权限 , 甚至可以改变派生类对象对于基类成员的访问权限 . 个人认为这种语法很容易让 ...
- STL map 常见用法详解
<算法笔记>学习笔记 map 常见用法详解 map翻译为映射,也是常用的STL容器 map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器) 1. map 的定义 / ...
- 嵌套泛型参数IList<IList<Object>>如何传参
在调用第三方库的时候,有这么一个泛型参数,如下图: 按照经验,使用两个List嵌套声明变量即可: IList<IList<AnnotatedPoint2D>> outImag ...
- Codeforces 1236B. Alice and the List of Presents
传送门 显然每种礼物是互相独立的,一个礼物的分配不会影响另一个礼物 对于某个礼物 $x$ , 对于每个盒子来说,要么选要么不选,那么可以看成长度为 $m$ 的二进制序列 这个序列第 $i$ 位的数就代 ...
- PyQt5创建多线程
参阅: https://blog.csdn.net/chengmo123/article/details/96477103 https://www.cnblogs.com/zhuminghui/p/9 ...
- flume收集日志直接sink到oracle数据库
因为项目需求,需要保存项目日志.项目的并发量不大,所以这里直接通过flume保存到oracle 源码地址:https://github.com/jaxlove/fks/tree/master/src/ ...
- 封装一些简单的 dom 操作
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- js页面加载时候的调用函数的方法
方法一:jquery 中:$(function(){}) 括号内写你的内容 方法二:html <body onload=''> <script type="text/jav ...
- 如何将spring源码导入到eclipse中
如何将spring源码导入到eclipse中 1. 下载spring源码 可以在github官网中找到spring源码来下载,或者直接通过git下载,是一样的,这里演示 直接在github网站下载, ...