您的位置:首页 > 理论基础 > 计算机网络

C++ http get下载网页源码

2016-04-18 21:30 501 查看
例子1:wininet

#include <stdio.h>

#include <windows.h>

#include <wininet.h>

#define MAXSIZE 1024

#pragma comment(lib, "Wininet.lib")

void urlopen(_TCHAR*);

int _tmain(int argc, _TCHAR* argv[])

{

urlopen(_T("http://www.jb51.net"));

return 0;

}

void urlopen(_TCHAR* url)

{

HINTERNET hSession = InternetOpen(_T("UrlTest"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

if(hSession != NULL)

{

HINTERNET hHttp = InternetOpenUrl(hSession, url, NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);

if (hHttp != NULL)

{

wprintf_s(_T("%s\n"), url);

BYTE Temp[MAXSIZE];

ULONG Number = 1;

while (Number > 0)

{

InternetReadFile(hHttp, Temp, MAXSIZE - 1, &Number);

Temp[Number] = '\0';

printf("%s", Temp);

}

InternetCloseHandle(hHttp);

hHttp = NULL;

}

InternetCloseHandle(hSession);

hSession = NULL;

}

}

例子2:winsock

#include <winsock2.h>

#include<windows.h>

#include<stdio.h>

#pragma comment(lib, "ws2_32.lib")

int main(int argc, char* argv[])

{

char server_name[256]= "www.163.com";

WSADATA wsaData;

struct sockaddr_in
srv_addr;

if (WSAStartup(0x202,&wsaData) == SOCKET_ERROR) {

WSACleanup();

return -1;

}

SOCKET cli_sock=socket(PF_INET,SOCK_STREAM,0);

if (cli_sock==INVALID_SOCKET)

return -1;

// connect to server

srv_addr.sin_family = AF_INET;

LPHOSTENT lphost = gethostbyname(server_name);

if (lphost != NULL)

srv_addr.sin_addr.s_addr = ((LPIN_ADDR)lphost->h_addr)->s_addr;

srv_addr.sin_port= ntohs(80);

if (connect(cli_sock,(LPSOCKADDR)&srv_addr,sizeof(srv_addr))==SOCKET_ERROR){

return -1;

}

char sz[]="GET / HTTP/1.1\r\nHost:www.163.com\r\n\r\n";

int retval = send(cli_sock,sz,sizeof(sz)-1,0);

if( SOCKET_ERROR == retval )

return 0;

char buffer[1024]={0};

while( SOCKET_ERROR != retval ){

retval = recv(cli_sock ,buffer,1000,0);

printf("%s\n",buffer);

}

closesocket(cli_sock);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: