BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / search-engine / #7828同步于 2009/4/13
SearchEngine机器人发帖

vc下用http下载网页的问题

yourwangzi
2009/4/13镜像同步0 回复
#include<winsock2.h> #include<stdio.h> #include<stdlib.h> #include<string.h> #pragma comment(lib,"Ws2_32.lib") void main() { WSADATA wsd; //存放windows socket初始化信息. SOCKET Socket; char buff[1024]; FILE *fp; int ret; struct sockaddr_in server; //存储ip地址的东西? if(WSAStartup(MAKEWORD(2,2),&wsd)!=0) // 指明请求的socket版本。wsd 指向WSADATA数据结构的指针,用来接收Windows Sockets实现的细节. { printf("wsastartup error"); return; } Socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //第一个参数说明用v4的地址;第三个参数为0时,根据第二个参数进行默认 if(Socket==INVALID_SOCKET) { printf("socket error"); return; } hostent *host;//存放地址列表 host=gethostbyname("www.qq.com"); server.sin_family=AF_INET; server.sin_port=htons(80); server.sin_addr=*((LPIN_ADDR)*host->h_addr_list); //初始server if(!(fp=fopen("localhost.html","w"))){ printf("wenjianweidakai"); return; } if(connect(Socket,(struct sockaddr*)&server,sizeof(server))==SOCKET_ERROR)//与远程地址建立连接 { printf("connect error"); return; } else{printf("connected\n");} strcpy(buff,"GET / \r\nHTTP/1.1\r\n" "Accept: */*\r\n" "Accept-Language: zh-cn\r\n" "Accept-Encoding: gzip, deflate\r\n" "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\r\n" "Host: www.qq.com\r\n" "Connection: Keep-Alive\r\n\r\n"); ret=send(Socket,buff,strlen(buff),0); printf("ret is %d\n",ret); if(ret) printf("have send!\n"); while(ret!=0) { ret=recv(Socket,buff,sizeof(buff),0); printf("ret is %d\n",ret); if(ret) fwrite(buff,ret,1,fp); } fclose(fp); closesocket(Socket); WSACleanup(); } 请问大家,为什么这个程序不能抓到百度首页,和腾讯等著名的门户网站的首页?研究了一下午了。请牛人指点
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。