http请求判断网络状态
// http 请求返回码==200 表明网络连接正常
int checkWithHttpRequest()
{//加载套接字库WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 ); //初始化Socket动态连接库,请求1.1版本的winsocket库err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 )return 1;if ( LOBYTE( wsaData.wVersion ) != 1 || //判断请求的winsocket是不是1.1的版本HIBYTE( wsaData.wVersion ) != 1 ) {WSACleanup( ); return 1; }char http[60] = "www.baidu.com"; //访问网页SOCKET sock = socket(AF_INET,SOCK_STREAM,0);//建立socketif (sock == INVALID_SOCKET){return 1;}sockaddr_in hostadd;hostent* host = gethostbyname(http);//取得主机的IP地址if(host==NULL){//cout<<"主机处于没有联网状态;"<<endl;return -1;}//cout<<"主机处于联网状态,现在可以进行通信!"<<endl;memcpy(&hostadd,host->h_addr,sizeof(hostadd));//将返回的IP信息Copy到地址结构hostadd.sin_family = AF_INET;hostadd.sin_port = htons(80);char buf[1024]="GET / HTTP/1.1\r\nHost: ";//构造Http请求数据包strcat(buf,inet_ntoa(hostadd.sin_addr));strcat(buf," \r\nContent-Length: 10\r\n\r\n");strcat(buf,"Connection:close");int time = 1000; //超时时间setsockopt(sock,SOL_SOCKET,SO_RCVTIMEO,(char*)&time,sizeof(time));if (connect(sock,(sockaddr*)&hostadd,sizeof(hostadd)) == SOCKET_ERROR)//连接请求{//cout<<"与网页建立连接失败!"<<endl;return 1;}if (SOCKET_ERROR == send(sock,buf,strlen(buf)+1,0))//发送构造好的Http请求包{//cout<<"发送数据包失败!"<<endl;return 1;}memset(buf,0,1024);recv(sock,buf,1024,0); //接收返回的数据//cout<<"从网页中获取的数据为:"<<buf;// 读取返回的html 第9-11个字节char testBuf[10] ;memset(testBuf, 0, 10);memcpy(testBuf, buf+9, 3);if(strcmp(testBuf, "200"))return 1;closesocket(sock);WSACleanup();return 0;
}
根据最后的 返回码,如果http请求返回200 表示连接正常
网络连接正常 返回 0
在第9-11字节
程序是借鉴 csdn Jpday博主 的。
特此声明:
http://blog.csdn.net/jpday/article/details/9329185http://blog.csdn.net/jpday/article/details/9329185
http请求判断网络状态相关推荐
- promise使用promise进行判断网络状态
使用promise是为了达到一个并行异步的目的 // 判断网络状态networkState() {return new Promise((resolve, reject) => {uni.get ...
- Android判断网络状态是否断开
1.Android判断网络状态是否断开 不多说了,看代码吧! /** * 判断网络状态是否可用 * @return true: 网络可用 ; false: 网络不可用 */ public b ...
- android 网络代码是什么意思,Android判断网络状态的代码
本文实例为大家分享了Android判断网络状态的具体代码,供大家参考,具体内容如下 一.权限 需要在AndroidManifest.xml 添加访问权限 二.判断连接状态 /** * 判断是否有网络连 ...
- iphone开发使用Reachability判断网络状态
在使用Reachability判断网络状态时,我们可以下载苹果官网的Reachability.zip文件,解压之后有一个不错的实例供我们参考. 1.下载 http://developer.apple. ...
- Android 网络请求、网络状态及各种权限判断
一.判断网络连接是否可用 public static boolean isNetworkAvailable(Context context) { ConnectivityManager cm = (C ...
- Android判断网络状态
package com.ch.services; import com.ch.utils.NetWorkUtils; import android.app.Service; import androi ...
- Android 判断网络状态
网络状态如果在5.0之后有了很大的改变,比如添加权限等,如果还是使用之前的判断 返现方法过时了 下面写了2个方法包含5.0之前的写法,和5.0之后的写法 5.0之后需要在配置文件中添加 <use ...
- Android开发(七)——判断网络状态
项目中难免会出现使用网络的情况,使用网络前得进行网络判断,看网上的网友一般有多种实现版本. 第一种: // 是否有网络连接public static boolean isNetworkConnecte ...
- Android之判断网络状态(网络的连接,改变,和判断2G/3G/4G)
现在app大多都需要从网络上获得数据.所以访问网络是在所难免.但是再访问网络之前,我们应该先做一下网络的状态判断.其实在访问网络之前我们要做一些状态判断,对应一些状态判断来做处理,并不是直接使用Htt ...
最新文章
- 华为存储iscsi配置_网络+存储+虚拟化:三大要素构建新网络
- 生产成本和主营业务成本
- java字符串去重复_java去除字符串中重复、不重复、消除重复后字符
- [Web开发] MySpace 发布开发接口
- idea启动项目没错,可是debug却一直启动不起来
- 超级计算机操作系统有什么不同,超级计算机功能强大吗?它与普通计算机不同,但也使用Windows系统...
- 互联网创业是没有什么好计划的
- c ++中哈希表如何访问_C / C ++中的哈希表–完整的实现
- win10的一些命令,记一记
- 对抗搜索(Adversarial Games)——Min-max搜索 Aleph-beta剪枝搜索
- “蹲坑神器”与它背后男人们不得不说的故事
- 公众号零基础,只需10分钟,你的公众号也能5天500+粉丝
- error: bad signature 0x00000000
- 一致性检验 -- Kappa 系数
- mysql 错误代码1130_mysql出现错误码1130怎么办
- 【MySQL用法】MySQL中大于,大于等于,小于,小于等于的转义写法
- 一步步教你批量压缩打包文件夹
- 相机光学(一)——成像系统分辨率的理论
- win10无限蓝屏_win10蓝屏died怎么办_win10无限process died解决方法
- outlook打不开怎么办?