返回信息流#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();
}
请问大家,为什么这个程序不能抓到百度首页,和腾讯等著名的门户网站的首页?研究了一下午了。请牛人指点
这是一条镜像帖。来源:北邮人论坛 / search-engine / #7828同步于 2009/4/13
SearchEngine机器人发帖
vc下用http下载网页的问题
yourwangzi
2009/4/13镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。