69,373
社区成员
发帖
与我相关
我的任务
分享
/*****************************************************************/
/*********** 程序名称: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;
// }
char *host_name = "www.sohu.com";
black_sock = htconnect(host_name,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 == 10000){break;}
htsend(black_sock, "GET / HTTP/1.0\n");
htsend(black_sock, "Host: %s\n", host_name);
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);
}