linux C发送 http 请求

/*****************************************************************
/*********** 程序名称:get_http.c ********************************
/*********** 功能:向固定地址发起请求得到返回页面字符 ************
/*********** 作者:YZW   ******************************************
/*********** 时间:2010-10-28 ************************************
/*****************************************************************


include    stdio.h
#include stdlib.h
#include string.h
#include stdarg.h
#include sys/socket.h
#include netinet/in.h
#include netdb.h

int htconnect(char *host, int port){
          int white_sock;
          struct hostent * site;
          struct sockaddr_in me;
          site = gethostbyname(host);
          if (site==NULL) return -2;
          white_sock = socket(AF_INET,SOCK_STREAM,0);
          if (white_sock <0) return -1;
          memset(&me, 0, sizeof(struct sockaddr_in));
          memcpy(&me.sin_addr, site-> h_addr_list[0], site-> h_length);
          me.sin_family = AF_INET;
          me.sin_port = htons(port);
          return (connect(white_sock, (struct sockaddr *)&me,sizeof(struct sockaddr)) <0) ? -1 : white_sock;
}

int htsend(int sock, char *fmt, ...){
          char BUF[1024];
          va_list argptr;
          va_start(argptr,fmt);
          vsprintf(BUF,fmt,argptr);
          va_end(argptr);
          //printf(BUF);   //回显
          //printf("-->%s<--\n",BUF);
          return send(sock,BUF,strlen(BUF),0);
}


int main(int argc,char **argv){
          int black_sock;
          int M,N;
          char bugs_bunny[3];
          if (argc<2){
                  printf( "Please input the hostName. Example:\n %s www.sohu.com\n ",argv[0]);
                  return;
          }
          black_sock = htconnect(argv[1],80);
          if (black_sock <1) return;

          printf("循环发送请求开始\n");
          printf("......\n");
          M=1;N=1;
          while (N==1){
                  if(M % 1000 == 0){printf("当前循环次数:%d \n",M);       }
                  if(M == 1000000){break;}
                  htsend(black_sock, "GET / HTTP/1.0\n");
                  htsend(black_sock, "Host: %s\n", argv[1]);
                  htsend(black_sock, "\n");
                  //htsend(black_sock, "%c ", 10);
                  M++;
          }
          printf("循环发送请求 %d 次\n",M);

          printf("收到信息Start:---->\n");
          //while (read(black_sock, bugs_bunny, 1)> 0){
          //       printf( "%c",bugs_bunny[0]);
          //}
          printf( "收到信息End.<----\n ");
          close(black_sock);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值