자료 저장소

■ 웹사이트 IP와 첫페이지 데이터 얻기

:: 단순히 소켓과 API를 이용하여 도메인에 대한 IP주소를 얻어오고 1024 바이트 크기의 버퍼로 포트번호 80 으로 
   들어오는 데이터를 출력한다.


#include <stdio.h> 
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")

void ErrorPrint(char *str)
{
printf("%s",str);
exit(1);
}

void main()
{
int bytesent;
char szBuf[1024];
hostent* remoteHost;
WSADATA wsaData;
char *remoteIP;

int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);

if(iResult != NO_ERROR)
ErrorPrint("Error at WSAStartup()");

SOCKET ConnectSocket;
ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if(ConnectSocket == INVALID_SOCKET)
{
printf("Error at socket() : %ld\n",WSAGetLastError());
WSACleanup();
return ;
}

remoteHost = gethostbyname("www.yahoo.com");
remoteIP = inet_ntoa(*(struct in_addr *)*remoteHost->h_addr_list);

printf("address = %s\n",remoteHost->h_name);
printf("address = %s\n",remoteIP);

sockaddr_in clientService;
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr(remoteIP);
clientService.sin_port = htons(80);

if(connect(ConnectSocket,(SOCKADDR*)&clientService,sizeof(clientService))
                     == SOCKET_ERROR)
ErrorPrint("Failed to connect");

bytesent = send(ConnectSocket,"get http:\\www.yahoo.com\r\n\r\n",30,0);

printf("Byte Sent : %ld\n",bytesent);

while(recv(ConnectSocket, szBuf, 1024, 0))
printf("%s",szBuf);

WSACleanup();

return ;
}


댓글 로드 중…

최근에 게시된 글