epoll完成的大量代理地址验证程序

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, 
0sizeof(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 = '
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值