본문 바로가기
IT창고/Network

웹브라우저에 패킷을 보내기

by 창구창고 2007. 1. 22.

📑 목차

    반응형
    #define WIN32_LEAN_AND_MEAN // windows.h 에서 자주 사용하지 않은 것은 컴파일에서 제외 한다.
    							// winsock2.h외의 충돌을 막아 준다.
    
    #include<stdio.h>
    #include<windows.h>
    #include<winsock2.h>
    
    #pragma comment(lib, "ws2_32.lib")
    
    void main()
    {
    	WSADATA wsadata;
    
    	//if(WSAStartup(0x0202, &wsadata) != 0)			//0x0202는 뒤에서부터 읽어서 2.2버젼을 쓰라는 이야기다.
    	if(WSAStartup(MAKEWORD(2,2), &wsadata) != 0)	//많이 사용... 앞에서 부터 읽는다.
    	{
    		printf("Can't Initialize Socket !\n");
    		return ;
    	}	
    	//------------------------------------------
    	char url[256] = { 0 };
    	printf("접속할 URL을 입력하세요 >> ");
    	scanf("%s",url);fflush(stdin);
    
    	//URL -> IP로 변경하기.
    	HOSTENT * p = gethostbyname(url);
    	int index = 0;
    	while(p->h_addr_list[index])
    	{
    
    	in_addr addr = *((in_addr *)(p->h_addr_list[index]));
    
    	printf("IP Address : %s\n", inet_ntoa( addr ));
    	index++;
    	}
    	//------------------------------------------
    	in_addr serverip = *((in_addr *)(p->h_addr_list[0]));
    
    	SOCKET s = socket( AF_INET, SOCK_STREAM, 0 );
    
    	SOCKADDR_IN addr_in = { 0 };
    	addr_in.sin_family				= AF_INET;
    	addr_in.sin_port				= htons(80);//웹서버 포트번호
    	addr_in.sin_addr				= serverip;
    
    	if(connect(s, (SOCKADDR* )&addr_in, sizeof(addr_in)) == -1)
    	{
    		printf("Can't connect to server!!\n");
    		closesocket(s);
    		return ;
    	}
    	printf("Connected server!!\n");
    
    	//서버에 HTTP 요청 팻킷을 보낸다.
    	char buf[256] ="GET / HTTP/1.0\r\n\r\n";
    	//strcpy(buf, url);
    
    	send(s, buf, strlen(buf)+1, 0);
    
    	//서버에서 오는 data를 수신한다.
    	char data[4096] = { 0};
    	recv(s, data, 4096, 0 );
    	 
    	printf("%s\n",data);
    
    	closesocket(s);
    
    	//------------------------------------------
    	WSACleanup();
    }
    
     
    //URL로 IP얻어오기
    #define WIN32_LEAN_AND_MEAN // windows.h 에서 자주 사용하지 않은 것은 컴파일에서 제외 한다.
    							// winsock2.h외의 충돌을 막아 준다.
    
    #include<stdio.h>
    #include<windows.h>
    #include<winsock2.h>
    
    #pragma comment(lib, "ws2_32.lib")
    
    void main()
    {
    	WSADATA wsadata;
    
    	//if(WSAStartup(0x0202, &wsadata) != 0)			//0x0202는 뒤에서부터 읽어서 2.2버젼을 쓰라는 이야기다.
    	if(WSAStartup(MAKEWORD(2,2), &wsadata) != 0)	//많이 사용... 앞에서 부터 읽는다.
    	{
    		printf("Can't Initialize Socket !\n");
    		return ;
    	}	
    	//------------------------------------------
    	char url[256] = { 0 };
    	printf("접속할 URL을 입력하세요 >> ");
    	scanf("%s",url);fflush(stdin);
    
    	//URL -> IP로 변경하기.
    	HOSTENT * p = gethostbyname(url);
    
    	in_addr addr = *((in_addr *)(p->h_addr_list[0]));
    
    	printf("IP Address : %s\n", inet_ntoa( addr ));
    	
    	//------------------------------------------
    	WSACleanup();
    }
    
    반응형

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."