admin 管理员组文章数量: 894192
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博主 的。
特此声明:
://blog.csdn.net/jpday/article/details/9329185
本文标签: http请求判断网络状态
版权声明:本文标题:http请求判断网络状态 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687330830h90359.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论