当前位置: 首页 > news >正文

端口映射(socket应用)

# coding=gb2312

import sys
import time
import socket
import thread
import subprocess

################################

interfaceName = "本地连接"
portStart = 10000
portNumber = 500

################################

def getNextIp(ip):
    t = [int(x) for x in ip.split(".")]
    assert len(t) == 4
    t[3] += 1
    for i in range(3, -1, -1):
        if t[i] > 255:
            assert i > 0
            t[i] = 1
            t[i - 1] += 1
        else:
            break
    return ".".join([str(x) for x in t])

def print_with_lock(msg):
    lock.acquire()
    print msg
    lock.release()

def server(listen_host, listen_port, target_host, target_port):
    print_with_lock("server started, %s, %s, %s, %s" % (listen_host, listen_port, target_host, target_port))
    try:
        dock_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        dock_socket.bind((listen_host, listen_port))
        dock_socket.listen(5)
        while True:
            client_socket, client_address = dock_socket.accept()
            print_with_lock("connection accepted, %s, %s, %s, %s" % (listen_host, listen_port, target_host, target_port))
            server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            server_socket.connect((target_host, target_port))
            thread.start_new_thread(forward, (client_socket, server_socket, "client -> server" ))
            thread.start_new_thread(forward, (server_socket, client_socket, "server -> client" ))
    finally:
        thread.start_new_thread(server, (listen_host, listen_port, target_host, target_port))

def forward(source, destination, description):
    data = 'dummy'
    while data:
        data = source.recv(1024)
        if data:
            destination.sendall(data)
        else:
            source.shutdown(socket.SHUT_RD)
            destination.shutdown(socket.SHUT_WR)



lock = thread.allocate_lock()

# 启动代理线程
port = portStart
ipin = "127.0.0.2"
for i in range(0, portNumber):
    thread.start_new_thread(server, ("0.0.0.0", port, ipin, 23))
    ipin = getNextIp(ipin)
    port += 1

while True:
    time.sleep(1.0)

 

转载于:https://www.cnblogs.com/yizhipanghu/p/10901701.html

相关文章:

  • 她本不是你的花,只是你途径了她的绽放。
  • xml理论
  • mysql 赋予用户权限
  • 二项式反演
  • Appium+python自动化1-环境搭建(windows上)
  • 客户端与服务端网络通信和设计相关
  • delphi stringgrid导出为excel
  • 前端面试中让你困惑的闭包、原型、原型链究竟是什么?
  • Windows下Nginx的启动、停止等命令
  • 计算几何——直线交点poj1269
  • 第三章 模块
  • 深度学习中的框架特点及介绍
  • oracle数据库ID自增长--序列
  • python编写弹球游戏的实现代码
  • 008
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Android优雅地处理按钮重复点击
  • css的样式优先级
  • laravel with 查询列表限制条数
  • learning koa2.x
  • Magento 1.x 中文订单打印乱码
  • maya建模与骨骼动画快速实现人工鱼
  • nfs客户端进程变D,延伸linux的lock
  • React as a UI Runtime(五、列表)
  • React-flux杂记
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • tweak 支持第三方库
  • underscore源码剖析之整体架构
  • 二维平面内的碰撞检测【一】
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 漂亮刷新控件-iOS
  • 新手搭建网站的主要流程
  • 在weex里面使用chart图表
  • gunicorn工作原理
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​ArcGIS Pro 如何批量删除字段
  • ​VRRP 虚拟路由冗余协议(华为)
  • #Linux(make工具和makefile文件以及makefile语法)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (2.2w字)前端单元测试之Jest详解篇
  • (27)4.8 习题课
  • (C++17) std算法之执行策略 execution
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (层次遍历)104. 二叉树的最大深度
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (六)软件测试分工
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十五)使用Nexus创建Maven私服
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • .“空心村”成因分析及解决对策122344
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET Framework 服务实现监控可观测性最佳实践