C语言HTTP请求GET

因对《所谓黑客揭秘》,大家都攻击代码的要求。所以我开始了为期两周的C/C++学习。由于没有任何C/C++基础,而是临时突击,所以代码肯定漏洞甚多,请观者见谅。同时欢迎拍砖或者支出代码错误,以求大家共同进步。

  1. #include <stdio.h>  
  2. #include <string.h>  
  3. #include <winsock.h>  
  4. #include <stdlib.h>  
  5.   
  6. void DownLoad(char *url){  
  7.     WSADATA WsaData;  
  8.     SOCKET socketfd;  
  9.     SOCKADDR_IN addr;  
  10.     HOSTENT *pURL;  
  11.     int i=0;  
  12.     char myurl[BUFSIZ];  
  13.     char *pHost =0,* pGet =0;  
  14.     char host[BUFSIZ],GET[BUFSIZ];  
  15.     char Header[BUFSIZ];  
  16.     FILE * pf;  
  17.   
  18.     static char text[BUFSIZ];  
  19.   
  20.     if (WSAStartup(MAKEWORD(2,2),&WsaData))  
  21.     {  
  22.         printf("The socket failed");  
  23.         return;  
  24.     }  
  25.     strcpy(myurl,url);  
  26.   
  27.     for (i=0,pHost= myurl;*pHost!='/'&&*pHost!='/0';pHost++,i++){  
  28.         host[i] = *pHost;  
  29.     }  
  30.     host[i]='/0';  
  31.     strcpy(GET,pHost);  
  32.     strnset(Header,'/0',BUFSIZ);  
  33.   
  34.   
  35.     socketfd = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);  
  36.     pURL = gethostbyname(host);  
  37.   
  38.     addr.sin_addr.s_addr = *((unsigned long *)pURL->h_addr);  
  39.     addr.sin_family = AF_INET;  
  40.     addr.sin_port = htons(80);  
  41.   
  42.       
  43.   
  44.     strcat(Header,"GET / ");  
  45.     strcat(Header,GET);  
  46.     strcat(Header,"HTTP/1.1/r/n");  
  47.     strcat(Header,"Accept: */*/r/n");  
  48.     strcat(Header,"Accept-Language: zh-cn/r/n");  
  49.     strcat(Header,"User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2)/r/n");  
  50.     //strcat(Header,"Accept-Encoding: gzip, deflate/r/n");  
  51.     strcat(Header,"Host: ");  
  52.     strcat(Header,host);  
  53.     strcat(Header,"/r/nConnection: Keep-Alive/r/n");  
  54.       
  55.     strcat(Header,"/r/n/r/n");  
  56.       
  57.     connect(socketfd,(SOCKADDR *)&addr,sizeof(addr));  
  58.     send(socketfd,Header,strlen(Header),0);  
  59.     printf("%s",Header);  
  60.     pf = fopen("1.txt","w");  
  61.     while(recv(socketfd,text,BUFSIZ,0)>0){  
  62.         printf("%s",text);  
  63.         fputs(text,pf);  
  64.         strnset(text,'/0',BUFSIZ);  
  65.     }  
  66.     fclose(pf);  
  67.     closesocket(socketfd);  
  68.     WSACleanup();  
  69.   
  70.       
  71. }  
  72. int main(){  
  73.     char a[256];  
  74.     printf("http://");  
  75.     scanf("%s",a);  
  76.     DownLoad(a);  
  77. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值