有利用http1.1下载网页的源码么?该怎么解决
有利用http1.1下载网页的源码么?
可以发个链接给我参考一下。
------解决方案--------------------
就是一个GET请求
------解决方案--------------------
#include <windows.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib ")
#define uchar unsigned char
#define DEFAULT_PROTO SOCK_STREAM // TCP
int main(int argc, char* argv[])
{
char server_name[256]= "www.163.com ";
int socket_type = DEFAULT_PROTO;
WSADATA wsaData;
struct sockaddr_insrv_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
unsigned short netshort;
if(WSAHtons(cli_sock, DEFAULT_PORT, &netshort))
{
return -1;
}
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= netshort;
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;
}
------解决方案--------------------
微软的WINHTTP封装了与服务器互操作的主要命令,抽象层次要比socket和urlmon都要高一些,建议用WINHTTP51进行编程,在主流操作系统上都有内置的支持。恰好有个文章可以供你参考:让我的C++程序直接阅读网页(5) 一个简单的例子。
可以发个链接给我参考一下。
------解决方案--------------------
就是一个GET请求
------解决方案--------------------
#include <windows.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib ")
#define uchar unsigned char
#define DEFAULT_PROTO SOCK_STREAM // TCP
int main(int argc, char* argv[])
{
char server_name[256]= "www.163.com ";
int socket_type = DEFAULT_PROTO;
WSADATA wsaData;
struct sockaddr_insrv_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
unsigned short netshort;
if(WSAHtons(cli_sock, DEFAULT_PORT, &netshort))
{
return -1;
}
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= netshort;
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;
}
------解决方案--------------------
微软的WINHTTP封装了与服务器互操作的主要命令,抽象层次要比socket和urlmon都要高一些,建议用WINHTTP51进行编程,在主流操作系统上都有内置的支持。恰好有个文章可以供你参考:让我的C++程序直接阅读网页(5) 一个简单的例子。