📄 00000014.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: tjb (老六), 信区: Linux <BR>标 题: 将前面的proxyverify.c改在linux下 <BR>发信站: BBS 水木清华站 (Wed Jul 15 08:29:59 1998) <BR> <BR>改动真的很少, //blush <BR>不好意思 <BR> <BR>/* Free Proxy 验证程序 ,for UNIX */ <BR>/* Author: Happy(Netguy) */ <BR>/* */ <BR>/* 1998.07.02 calvin注: */ <BR>/* 原来版本在Solaris上,我将它改到FreeBSD上来. :) */ <BR>/* */ <BR>/* 1998.07.15 tjb: */ <BR>/* 又改在linux下跑了:p 我没有linux下的, 所以改了改可以 */ <BR>/* 在linux下跑, 可能大家都有linux下的了:p */ <BR> <BR>//#define DEBUG <BR> <BR>#include <stdio.h> <BR>#include <string.h> <BR>#include <netinet/in.h> <BR>#include <sys/types.h> <BR>#include <sys/socket.h> <BR>#include <sys/signal.h> <BR>#include <sys/time.h> <BR>#include <fcntl.h> <BR>#include <unistd.h> <BR>#include <sys/ioctl.h> <BR> <BR>#define ZERO (fd_set *)0 /*tjb将(struct fd_set *)改为(fd_set *) */ <BR>#define BUFLEN 256 <BR> <BR>#ifdef DEBUG <BR> int tmp; <BR>#endif <BR> <BR>char target[]="GET <BR><A HREF="http://www.digital.com/index.html\n";/*HTTP命令*/">http://www.digital.com/index.html\n";/*HTTP命令*/</A> <BR>char result[80]; /* 存放过滤结果的文件的名字 */ <BR>char buf[BUFLEN]; /* 缓冲区 */ <BR>FILE *f,*out; /* 输入文件和输出文件 */ <BR>int port; /* server的端口号 */ <BR>int status=-1; /* read,write,select的返回值*/ <BR>char serverName[30]; /* server的IP字符串 */ <BR>u_char p1,p2,p3,p4; /* IP地址的四个部分 */ <BR>int sockfd=-1; /* socket描述符 */ <BR>struct timeval timeout={2,0}; /* 超时限制 */ <BR>fd_set rmask,wmask; /* socket的读写屏蔽 */ /*tjb去掉struct*/ <BR>struct sockaddr_in host; <BR>u_long serverAddr; /* server的IP地址 */ <BR>int counter; /* 输入文件的行数 */ <BR>int i; /* 文件描述符 */ <BR> <BR> <BR>void killHandle(int sig) /* TJB 加int sig */ /* 处理SIGTERM信号 */ <BR>{ <BR> fprintf(out,"killed at %s\t%d\n",serverName,port); <BR> exit(0); <BR>} <BR> <BR>#ifdef DEBUG <BR> void sigpipeHandle(void) <BR> { fprintf(out,"SIGPIPE at %s\t%d\n",serverName,port); <BR> } <BR>#endif <BR> <BR> <BR>main(int argc,char **argv) <BR>{ <BR> <BR> if(argc!=3) { printf("Usage: %s dataFileName number\n",argv[0]); <BR> exit(-1); } <BR> <BR> f=fopen(argv[1],"rb"); /* 作为输入的数据文件 */ <BR> if(! f) { fprintf(stdout,"open file error\n"); exit(-1); } <BR> <BR> strcpy(result,argv[1]); <BR> strcat(result,".ok"); <BR> out=fopen(result,"a"); /* 存放结果的输出文件 */ <BR> if(! out) { fprintf(stdout,"open file error\n"); exit(-1); } <BR> <BR> counter=atoi(argv[2]); /* 输入文件的行数 */ <BR> fprintf(stdout,"Free proxy filter...\n"); <BR> fprintf(stdout,"\tInput file:\t%s\n",argv[1]); <BR> fprintf(stdout,"\tTotal :\t%s\n",argv[2]); <BR> fprintf(stdout,"written by Netguy(造梦人)\n"); <BR> <BR> signal(SIGTERM,killHandle); <BR> <BR>#ifdef DEBUG /* 处理SIGPIPE信号 */ <BR> signal(SIGPIPE,sigpipeHandle); <BR>#else <BR> signal(SIGPIPE,SIG_IGN); <BR>#endif <BR> <BR> switch(fork( )) <BR> { case 0: /* 子进程继续 */ <BR> break; <BR> case -1: /* 出错 */ <BR> perror("fork( )"); <BR> exit(-1); <BR> default: <BR> fclose(out); /* 父进程退出 */ <BR> fclose(f); <BR> exit(0); <BR> } <BR> <BR> setpgid(0, getpgrp()); /* 脱离终端组和进程组,成为后台进程 */ <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -