윈속으로 웹페이지 긁어오는 프로그램을 만들었는데요.

nyamx2의 이미지

작동이 되질 않습니다.

디버깅해보면 recv()에서 블락킹이 걸리네요.

패킷을 보면 분명히 GET은 전달하는데..

telnet server 80 치고 GET 엔터 하면 페이지가 잘 뜨는데

어째서 제가 만든 프로그램에선 안되는걸까요?ㅠ_ㅠ

char* get_html(char *address)
{
WSADATA wsaData;
SOCKET sock;
LPHOSTENT lpHostEntry;
SOCKADDR_IN server_addr;

int datasize;
char server[ADDR_LEN];
char page[ADDR_LEN];
char *data;
int i;
char buf[BUFFER];
int nRet;

// 주소 파싱

for (i = 7 ; i < strlen(address) ; i++)
if (address[i] == '/') break;

strcpy(server, address);
server[i] = '\0';
strcpy(page, &address[i+1]);

printf("서버네임 : %s, 페이지네임 : %s\n", server, page);

WSAStartup(MAKEWORD(2, 2), &wsaData);

sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (sock == INVALID_SOCKET)
{
printf("socket() error\n)");
exit(0);
}

lpHostEntry = gethostbyname(server);

if (lpHostEntry == NULL)
{
printf("함수 gethostbyname() 호출 하는 중에 문제가 발생했습니다.");
exit(0);
}

memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr = *( (LPIN_ADDR) *lpHostEntry->h_addr_list);
server_addr.sin_port = htons(80);

nRet = connect(sock, (LPSOCKADDR)&server_addr, sizeof(server_addr) );
if (nRet == SOCKET_ERROR)
{
printf("connect() 함수를 호출하는데 문제가 발생했습니다.");
exit(0);
}

sprintf(buf, "GET %s", page);

send(sock, buf, strlen(buf), 0);

datasize = recv(sock, buf, BUFFER, 0);

if (datasize == SOCKET_ERROR)
{
printf("recv() 함수를 호출하는데 문제가 발생했습니다.");
exit(0);
}

WSACleanup();

return buf;
}

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.