好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

简单的TCP代理服务器

简单的TCP代理服务器

我之前的一篇文章( http://www.cnblogs.com/MikeZhang/archive/2012/03/07/socketRedirect.html   )中介绍过用 python 写的一个简单的 http 端口转发程序,其实那个也算是个代理服务器,只是功能比较简单罢了。由于这段时间在开发代理服务器,接触到各个方面的资料,这里总结下,也方便我以后使用。

一、 netcat 实现

网址: http://netcat.sourceforge.net/

netcat 是个很强大的工具, 在网络工具中有“瑞士军刀”美誉 , 不懂的搜索下,我就不多说了,相关用法可参考这里: http://en.wikipedia.org/wiki/Netcat

我主要演示下 tcp 代理。

1 、首先开启 9000 端口提供 http 服务

./httpShareWithTrace_linux64 9000

(这个可以参考: http://www.cnblogs.com/MikeZhang/archive/2012/08/10/httpShareGolang20120809.html   )

我们可以看下效果:

2 、开启端口转发( tcp 代理)

命令如下:

mkfifo backpipe

nc -l 12345 0<backpipe | nc 192.168.1.100 9000 1>backpipe

图示如下:

和之前的图比较后发现,用 12345 这个端口和 9000 这个端口访问到的东西是相同的,说明代理成功了。

二、 socat 实现

网址: http://www.dest-unreach.org/socat/

这个和 netcat 功能类似,具体参考上面给的链接,这里我主要是给出代理的命令。

还以上面的情形为例( http 还用 9000 的端口),命令如下:

socat TCP-LISTEN:8080,fork TCP:192.168.1.100:9000

效果如下:

三、 Python 实现(增强版)

网址: https://github.com/knownsec/rtcp

我之前写的那个太玩具了,推荐用这个。

四、 c++ boost  实现

网址: http://tcpproxy.codeplex.com/

这个是借助 c++ 的 boost 库实现的,用的异步机制,写的比较好。

五、 go 语言实现

网址: https://gist.github.com/3853140

这个是 github 上我的 gist ,这个实现很轻巧,功能很强大。

好,就这些了,希望对你有帮助。

E-Mail : Mike_Zhang@live.com

分类:  C++ ,  go ,  python

标签:  python ,  c++ ,  go ,  代理

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于简单的TCP代理服务器的详细内容...

  阅读:38次

上一篇: Python批量下载图片

下一篇:事务属性小结