linux 访问url 参数,linux下的URL访问接口

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define BUFSIZE 0xF000

void geturl(char* url)

{

int cfd;

struct sockaddr_in cadd;

struct hostent *pURL = NULL;

char myurl[BUFSIZE];

char *pHost = 0;

char host[BUFSIZE],GET[BUFSIZE];

char request[BUFSIZE];

static char text[BUFSIZE];

int i,j;

//分离主机中的主机地址和相对路径

memset(myurl,0,BUFSIZE);

memset(host,0,BUFSIZE);

memset(GET,0,BUFSIZE);

strcpy(myurl,url);

for(pHost = myurl;*pHost != '/' && *pHost != '\\0';++pHost);

//获取相对路径保存到GET中

if((int)(pHost-myurl) == strlen(myurl))

{

strcpy(GET,"/");//即url中没有给出相对路径,需要自己手动的在url尾

//部加上/

}

else

{

strcpy(GET,pHost);//地址段pHost到strlen(myurl)保存的是相对路径

}

//将主机信息保存到host中

//此处将它置零,即它所指向的内容里面已经分离出了相对路径,剩下的为host信

//息(从myurl到pHost地址段存放的是HOST)

*pHost = '\\0';

strcpy(host,myurl);

//设置socket参数

if(-1 == (cfd = socket(AF_INET,SOCK_STREAM,0)))

{

printf("create socket failed of client!\\n");

exit(-1);

}

pURL = gethostbyname(host);//将上面获得的主机信息通过域名解析函数获得域>名信息

//设置IP地址结构

bzero(&cadd,sizeof(struct sockaddr_in));

cadd.sin_family = AF_INET;

cadd.sin_addr.s_addr = *((unsigned long*)pURL->h_addr_list[0]);

cadd.sin_port = htons(80);

//向WEB服务器发送URL信息

memset(request,0,BUFSIZE);

strcat(request,"GET ");

strcat(request,GET);

strcat(request," HTTP/1.1\\r\\n");//至此为http请求行的信息

strcat(request,"HOST: ");

strcat(request,host);

strcat(request,"\\r\\n");

strcat(request,"Cache-Control: no-cache\\r\\n\\r\\n");

//连接服务器

int cc;

if(-1 == (cc = connect(cfd,(struct sockaddr*)&cadd,(socklen_t)sizeof(cadd))))

{

printf("connect failed of client!\\n");

exit(1);

}

printf("connect success!\\n");

//向服务器发送url请求的request

int cs;

if(-1 == (cs = send(cfd,request,strlen(request),0)))

{

printf("向服务器发送请求的request失败!\\n");

exit(1);

}

printf("发送成功,发送的字节数:%d\\n",cs);

//客户端接收服务器的返回信息

memset(text,0,BUFSIZE);

int cr;

if(-1 == (cr = recv(cfd,text,BUFSIZE,0)))

{

printf("recieve failed!\\n");

exit(1);

}

else

{

printf("receive succecc!\\n");

}

close(cfd);

}

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

{

if(argc<2)

{

printf("用法:%c url网页网址\\n",argv[0]);

exit(1);

}

geturl(argv[1]);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值