epoll完成的大量代理地址验证程序
#include
<
stdio.h
>

#include
<
stdint.h
>

#include
<
unistd.h
>

#include
<
fcntl.h
>

#include
<
string
.h
>

#include
<
strings.h
>

#include
<
sys
/
types.h
>

#include
<
sys
/
socket.h
>

#include
<
arpa
/
inet.h
>

#include
<
stdlib.h
>

#include
<
errno.h
>

#include
<
sys
/
epoll.h
>



#define
MAXSOCKFDNUM 100

#define
TIMEOUT (20 * 1000)

#define
HTTP_REQ "GET /us/ HTTP/1.1 Host: www.ibm.com:80 User-Agent: wget Accept: text/xml,text/html;*/* "



struct
epoll_datas


...
{

struct sockaddr servaddr;

int sockfd;

}
;

struct
epoll_datas datas[MAXSOCKFDNUM];



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


...
{

struct sockaddr_in *st_in;

//int sockfds[MAXSOCKFDNUM], flags;


char buffer[1000];

int recvlen;

int dstport, n, flags;



int error = 0, i;

socklen_t len;

int epoll_handle;

struct epoll_event ev;

struct epoll_event events[MAXSOCKFDNUM * 2];

char *ptr = NULL;

int ret;

char ip_str_ret[20];

FILE *fp;

int ipnum;

int num = 0;


memset(events, 0, sizeof(events));

fp = fopen("/tmp/ip_list.txt", "r");


if (fp == NULL) ...{

perror("fopen");

return 0;

}


if ((epoll_handle = epoll_create(MAXSOCKFDNUM)) == -1) ...{

perror("epoll_create");

return 0;

}



ipnum = 0;


for (i = 0; i < MAXSOCKFDNUM; i++) ...{


if (fgets(buffer, sizeof(buffer), fp) == NULL) ...{

break;

}

ipnum++;

datas[i].sockfd = socket(AF_INET, SOCK_STREAM, 0);


if (datas[i].sockfd < 0) ...{

perror("socket");

return 0;

}

flags = fcntl(datas[i].sockfd, F_GETFL, 0);


if (flags == -1) ...{

perror("fcntl");

return 0;

}

fcntl(datas[i].sockfd, F_SETFL, flags | O_NONBLOCK);



ev.events = EPOLLIN | EPOLLOUT | EPOLLET;

ev.data.ptr = &(datas[i]);


if (epoll_ctl(epoll_handle, EPOLL_CTL_ADD, datas[i].sockfd, &ev) < 0) ...{

perror("epoll_ctl");

return 0;

}



st_in = (struct sockaddr_in *)&datas[i].servaddr;

bzero(st_in, sizeof(datas[i].servaddr));

st_in->sin_family = AF_INET;

ptr = strchr(buffer, ':');

*ptr = '


















































































































































































