• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python实现TCP/IP协议下的端口转发及重定向示例

Python实现TCP/IP协议下的端口转发及重定向示例

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了tcp/ip协议端口,tcp/ip协议端口号,重置tcp/ip协议端口,tcp/ip协议中的端口,tcp ip协议等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

首先,我们用webpy写一个简单的网站,监听8080端口,返回“Hello, EverET.org”的页面。

然后我们使用我们的forwarding.py,在80端口和8080端口中间建立两条通信管道用于双向通信。

此时,我们通过80端口访问我们的服务器。

浏览器得到:

2016614172131520.png (426×190)

然后,我们在forwarding.py的输出结果中可以看到浏览器和webpy之间的通信内容。

2016614172157520.png (675×588)

代码:

#!/usr/bin/env python
import sys, socket, time, threading

loglock = threading.Lock()
def log(msg):
  loglock.acquire()
  try:
    print '[%s]: \n%s\n' % (time.ctime(), msg.strip())
    sys.stdout.flush()
  finally:
    loglock.release()

class PipeThread(threading.Thread):
  def __init__(self, source, target):
    threading.Thread.__init__(self)
    self.source = source
    self.target = target

  def run(self):
    while True:
      try:
        data = self.source.recv(1024)
        log(data)
        if not data: break
        self.target.send(data)
      except:
        break
    log('PipeThread done')

class Forwarding(threading.Thread):
  def __init__(self, port, targethost, targetport):
    threading.Thread.__init__(self)
    self.targethost = targethost
    self.targetport = targetport
    self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.sock.bind(('0.0.0.0', port))
    self.sock.listen(10)
  def run(self):
    while True:
      client_fd, client_addr = self.sock.accept()
      target_fd = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      target_fd.connect((self.targethost, self.targetport))
      log('new connect')
      # two direct pipe
      PipeThread(target_fd, client_fd).start()
      PipeThread(client_fd, target_fd).start()


if __name__ == '__main__':
  print 'Starting'
  import sys
  try:
    port = int(sys.argv[1])
    targethost = sys.argv[2]
    try: targetport = int(sys.argv[3])
    except IndexError: targetport = port
  except (ValueError, IndexError):
    print 'Usage: %s port targethost [targetport]' % sys.argv[0]
    sys.exit(1)

  #sys.stdout = open('forwaring.log', 'w')
  Forwarding(port, targethost, targetport).start()
</div>

</div>

您可能想查找下面的文章:

  • Python实现TCP/IP协议下的端口转发及重定向示例

相关文章

  • Python下singleton模式的实现方法
  • Python提取网页中超链接的方法
  • python设置检查点简单实现代码
  • 从零学python系列之从文件读取和保存数据
  • Python数据类型详解(二)列表
  • Python的Django框架中TEMPLATES项的设置教程
  • 使用 tf.nn.dynamic_rnn 展开时间维度方式
  • python实现简单ftp客户端的方法
  • 举例讲解Python中的身份运算符的使用方法
  • 使用Python从有道词典网页获取单词翻译

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 浅谈Python爬取网页的编码处理
    • 在Django中管理Users和Permissions以及Groups的方法
    • python端口扫描系统实现方法
    • Python3搜索及替换文件中文本的方法
    • python缩进区别分析
    • python list排序的两种方法及实例讲解
    • 跟老齐学Python之for循环语句
    • python中__call__方法示例分析
    • python脚本爬取字体文件的实现方法
    • python开发之str.format()用法实例分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有