zoukankan      html  css  js  c++  java
  • 简单的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
  • 转载请注明出处,谢谢!
查看全文
  • 相关阅读:
    Linux的概念与体系
    Python快速教程
    Qt控件精讲一:按钮
    xml2-config not found
    Ubuntu 12.04更新源
    Adaboost的几个人脸检测网站
    关于matlab矩阵卷积conv2和傅里叶变换求卷积ifft2的关系
    char数组和String互转
    STL中vector的赋值,遍历,查找,删除,自定义排序——sort,push_back,find,erase
    《离散数学》-图论6.7
  • 原文地址:https://www.cnblogs.com/MikeZhang/p/tcpProxy20121009.html
  • Copyright © 2011-2022 走看看