// 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请求判断网络状态相关推荐

  1. promise使用promise进行判断网络状态

    使用promise是为了达到一个并行异步的目的 // 判断网络状态networkState() {return new Promise((resolve, reject) => {uni.get ...

  2. Android判断网络状态是否断开

    1.Android判断网络状态是否断开      不多说了,看代码吧! /** * 判断网络状态是否可用 * @return true: 网络可用 ; false: 网络不可用 */ public b ...

  3. android 网络代码是什么意思,Android判断网络状态的代码

    本文实例为大家分享了Android判断网络状态的具体代码,供大家参考,具体内容如下 一.权限 需要在AndroidManifest.xml 添加访问权限 二.判断连接状态 /** * 判断是否有网络连 ...

  4. iphone开发使用Reachability判断网络状态

    在使用Reachability判断网络状态时,我们可以下载苹果官网的Reachability.zip文件,解压之后有一个不错的实例供我们参考. 1.下载 http://developer.apple. ...

  5. Android 网络请求、网络状态及各种权限判断

    一.判断网络连接是否可用 public static boolean isNetworkAvailable(Context context) { ConnectivityManager cm = (C ...

  6. Android判断网络状态

    package com.ch.services; import com.ch.utils.NetWorkUtils; import android.app.Service; import androi ...

  7. Android 判断网络状态

    网络状态如果在5.0之后有了很大的改变,比如添加权限等,如果还是使用之前的判断 返现方法过时了 下面写了2个方法包含5.0之前的写法,和5.0之后的写法 5.0之后需要在配置文件中添加 <use ...

  8. Android开发(七)——判断网络状态

    项目中难免会出现使用网络的情况,使用网络前得进行网络判断,看网上的网友一般有多种实现版本. 第一种: // 是否有网络连接public static boolean isNetworkConnecte ...

  9. Android之判断网络状态(网络的连接,改变,和判断2G/3G/4G)

    现在app大多都需要从网络上获得数据.所以访问网络是在所难免.但是再访问网络之前,我们应该先做一下网络的状态判断.其实在访问网络之前我们要做一些状态判断,对应一些状态判断来做处理,并不是直接使用Htt ...

最新文章

  1. 华为存储iscsi配置_网络+存储+虚拟化:三大要素构建新网络
  2. 生产成本和主营业务成本
  3. java字符串去重复_java去除字符串中重复、不重复、消除重复后字符
  4. [Web开发] MySpace 发布开发接口
  5. idea启动项目没错,可是debug却一直启动不起来
  6. 超级计算机操作系统有什么不同,超级计算机功能强大吗?它与普通计算机不同,但也使用Windows系统...
  7. 互联网创业是没有什么好计划的
  8. c ++中哈希表如何访问_C / C ++中的哈希表–完整的实现
  9. win10的一些命令,记一记
  10. 对抗搜索(Adversarial Games)——Min-max搜索 Aleph-beta剪枝搜索
  11. “蹲坑神器”与它背后男人们不得不说的故事
  12. 公众号零基础,只需10分钟,你的公众号也能5天500+粉丝
  13. error: bad signature 0x00000000
  14. 一致性检验 -- Kappa 系数
  15. mysql 错误代码1130_mysql出现错误码1130怎么办
  16. 【MySQL用法】MySQL中大于,大于等于,小于,小于等于的转义写法
  17. 一步步教你批量压缩打包文件夹
  18. 相机光学(一)——成像系统分辨率的理论
  19. win10无限蓝屏_win10蓝屏died怎么办_win10无限process died解决方法
  20. outlook打不开怎么办?

热门文章

  1. 想转行做大数据开发,求各路大神给指条明路?
  2. Ubuntu18如何下载微信和qq
  3. lisp语言如何画小红点_用AutoLISP语言编程实现参数化绘图
  4. 产品| 产品经理学习路径及职业规划
  5. 【斜率优化】特别行动队
  6. 红黑树的历史和由来。
  7. 关于把小写数字转化为大写数字的java代码
  8. excel如何把多张表合并成一个表_如何快速把多个excel表格合并成一个excel表
  9. 单片机、嵌入式错综复杂的关系分析
  10. 方正集团面试过程。。。