新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 操作系统 > Linux教程 > 正文:Linux下成功安装和配置Sock5代理的过程

Linux下成功安装和配置Sock5代理的过程

新客网 XKER.COM 2008-01-29 来源:赛迪网 sixth 收藏本文

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 
....
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);
}

 

修改过的代码:

 

 

//#include 
#include 


....
/*VARARGS*/
int command(const char *args,...) {
va_list ap;
char *fmt;
int r;
Sig_t oldintr;

abrtflag = 0;
if (cout == NULL) {
perror ("No control connection for command");
code = -1;
return (0);
}
oldintr = Signal(SIGINT, cmdabort);
fmt = args;
va_start(ap,args);
// 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);
}

 

这个函数修改过以后,后面还有一个文件clients/telnet/commands.c中的call()函数也要做类是的修改。

 

这里我推介大家看看有关va_start(),va_end的文章;想更深层的可以看看标准c语言中的va函数的用法。

共2页: 上一页 [1] [2] 下一页
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐