可以使用curl 命令实现。
1、Curl是Linux下一个很强大的http命令行工具,其功能十分强大。
2、下面的例子只作为示范,与真实网站无关:读取网页
$ curl http://www.baidu.com。
网站
因特网起源于美国国防部高级研究计划管理局建立的阿帕网。
已知url ,host, portint s, size
struct sockaddr_in sin
struct hostent* phe
char cmd[256]
char msg_hdr[1000]
char* p
//准备http中GET 方法的请求。
sprintf(cmd,"GET %s\r\nHTTP/1.1\r\nHost:%s", url, host)
//创建socket
if((s=socket(PF_INET,SOCK_STREAM,0))<0)
return -1
//取得远程主机的IP地址,失败函数返回-1
if((phe = gethostbyname(host)) == NULL)
return -1
memset(&sin,0,sizeof(sin))
memcpy(&sin.sin_addr,phe->h_addr,sizeof(struct in_addr))
sin.sin_family=AF_INET
sin.sin_port=htons(pms->port)
//跟远程机器建立连接,失败函数返回-1
if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1)
return -1
//发送GET请求
if(write(s,cmd,strlen(cmd))<0)
return 0
//从链接描述符(连接管道)中读取传送过来的数据
if(read(s, msg_hdr, 300)<0)
error
close(s)
//读到该文件的大小
if((p=strstr(msg_hdr,"Content-Length"))||(p=strstr(msg_hdr,"Content-length:")))
p+=16
else
error
//返回大小
size = atoi(p)
sprintf(cmd,"GET %s HTTP/1.1\r\nHost: %s\r\nAccept: */*\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nConnection: close\r\nRange: bytes0-%d\r\n\r\n", url, host, size)
//创建套接口
if((s=socket(AF_INET,SOCK_STREAM,0))<0)
return 0
//取得远程主机的IP地址,失败返回0
if((phe = gethostbyname(host)) == NULL)
return 0
memset(&sin,0,sizeof(sin))
memcpy(&sin.sin_addr,phe->h_addr,sizeof(struct in_addr))
sin.sin_family=AF_INET
sin.sin_port=htons(port)
//建立连接
if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1)
return 0
//发送读取请求
if(write(s,cmd,strlen(cmd))<0)
error
read(s, buf, BUFSIZE)..............
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)