linux成功下安装和配置sock5代理的过程

在linux下安装和配置sock5代理的过程与问题

经过近一天的努力,终于在linux下把sock5代理服务建立起来了。现在我把整个过程中遇到的问题和解决方法记录下来,以便以后查找和他人的学习。

1.首先从网络上找到 socks5-v1.0r11.tar.gz ,还有一个是补丁包,那个包没有下,所以有什么用我不知道。
2.讲socks5-v1.0r11.tar.gz解压倒文件夹,利用下面这个命令,其实这几步网络上的资源很丰富,但我这里力求详细和全面。
解压上述压缩包,执行tar xvzf socks5-v1.0r11.tar.gz
解压缩后在目录下产生一个 socks5-v.1.0r11的目录。
3.进入该目录,运行./configure .这一步我顺利通过。
4.接着运行make,在编译的过程中遇到了问题,让我花了好长时间,在编译clients/ftp/ftp.c文件时,在command函数处出现问题,提示说arargs方法在gcc4.1.2中已经过时,不能用了。但是网上我没有找到可用的解决方法。所以只有自己解决,具体问题是varargs.h和stdarg.h的不兼容,就是说在处理不确定个数的参数的时候方法不同,现在的gcc已经用了stdarg方法,已经不用ararg的方法。两者的差异在于,va_start()函数的参数个数不同,格式也不一样,下面我同时列给出我修改的代码和原来的代码:

原来的代码:
引用:
#include <varargs.h>
....
int command(va_alist) va_dcl {
    va_list ap;
    char *fmt;
    int r;
    Sig_t oldintr;
   
    abrtflag = 0;
    if (debug) {
printf("---> ");
va_start(ap);
fmt = va_arg(ap, char *);
if (strncmp("PASS ", fmt, 5) == 0)
     printf("PASS XXXX");
else
     vfprintf(stdout, fmt, ap);
va_end(ap);
printf("\n");
fflush(stdout);
    }
    if (cout == NULL) {
perror ("No control connection for command");
code = -1;
return (0);
    }
    oldintr = Signal(SIGINT, cmdabort);
    va_start(ap);
    fmt = va_arg(ap, char *);
    vfprintf(cout, fmt, ap);
    va_end(ap);
    fflush(cout);
    cpend = 1;
    r = getreply(!strcmp(fmt, "QUIT"));
    Signal(SIGINT, oldintr);
    if (abrtflag) {
kill(getpid(),SIGINT);
    }
    return(r);
}