C++호스트 가 인터넷 상태 인지 판단

본 논문 의 사례 는 C+호스트 가 인터넷 상태 에 있 는 지 판단 하 는 구체 적 인 코드 를 공유 하여 여러분 에 게 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
직접 본 컴퓨터 로 하여 금 한 사 이 트 를 방문 하 게 합 니 다.만약 에 성공 하면 인터넷 에 성공 하고 방문 에 성공 하지 못 했다 는 것 을 설명 합 니 다.그러면 인터넷 이 없다 는 것 을 설명 합 니 다!!

#include<iostream>
#include <WINSOCK2.H>
#pragma comment(lib,"ws2_32.lib")
#define LEN 1024 //       
using namespace std;
 
 
int main()
{
 //      
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;
 
 wVersionRequested = MAKEWORD( 1, 1 );  //   Socket     ,  1.1   winsocket 
 
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 ) {
 return 0;
 }
 
 if ( LOBYTE( wsaData.wVersion ) != 1 ||  //     winsocket   1.1   
    HIBYTE( wsaData.wVersion ) != 1 ) {
 WSACleanup( );  //  
 return 0;   //   winsocket  
 }
 //WSADATA ws;
 //WSAStartup(MAKEWORD(2,2),&ws);//
 char http[60] = "www.google.com";  //      
 SOCKET sock = socket(AF_INET,SOCK_STREAM,0);//  socket
 if (sock == INVALID_SOCKET)
 {
 cout<<"    socket     !"<<endl;
 return 0;
 }
 sockaddr_in hostadd;
 hostent* host = gethostbyname(http);//     IP  
 if(host==NULL)
 {
 cout<<"          ;"<<endl;
 return 0;
 }
 cout<<"        ,        !"<<endl;
 memcpy(&hostadd,host->h_addr,sizeof(hostadd));//    IP  Copy     
 hostadd.sin_family = AF_INET;
 hostadd.sin_port = htons(80);
 
 
 char buf[LEN]="GET / HTTP/1.1\r
Host: ";// Http strcat(buf,inet_ntoa(hostadd.sin_addr)); strcat(buf," \r
Content-Length: 10\r
\r
"); 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 0; } if (SOCKET_ERROR == send(sock,buf,strlen(buf)+1,0))// Http { cout<<" !"<<endl; return 0; } memset(buf,0,LEN); recv(sock,buf,LEN,0); // cout<<" :"<<buf; closesocket(sock); WSACleanup(); return 0; }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기