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

python 端口的转发

实现端口的转发
tcpsocket.py 对基础的socket进行了封装

import socketclass baseSocket:def service(host:str,port:int,maxSuspend:int)->socket: service_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)            # 创建 socket 对象service_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)        # 允许socket地址复用,防止出现 address alread use 问题service_socket.bind((host,port))service_socket.listen(maxSuspend)return service_socketdef client(host:str,port:int):client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client.connect((host, port))return client

portForward.py 端口转发的程序

# coding: gbk  python文件的编码格式
import tcpSocket
import socket
import threadingdef forward(localSocket, localAddr ,remoteSocket,remoteAddr):while True:localdata = localSocket.recv(1024)if not localdata:exit(0)remoteSocket.send(localdata)def connectTask(localSocket, localAddr ,remoteSocket,remoteAddr):thdlocal = threading.Thread(target=forward, args=(localSocket,localAddr,remoteSocket,remoteAddr))thdlocal.daemon=True #设置daemon=True会标记其为守护线程,如果剩下的线程只有守护线程时,整个python程序都会退出thdremote = threading.Thread(target=forward, args=(remoteSocket,remoteAddr,localSocket,localAddr))thdremote.daemon=True #设置daemon=True会标记其为守护线程,如果剩下的线程只有守护线程时,整个python程序都会退出thdlocal.start()thdremote.start()if __name__ == "__main__":host = socket.gethostname()localPort = 8090remotePort = 8081maxlisten = 5localservice = tcpSocket.baseSocket.service(host,localPort,maxlisten)remoteservice = tcpSocket.baseSocket.service(host,remotePort,maxlisten)while True:localSocket,localAddr = localservice.accept()print(f"连接地址为{localAddr}")remoteSocket,remoteAddr = remoteservice.accept()print(f"连接地址为{remoteAddr}")thd = threading.Thread(target=connectTask, args=(localSocket,localAddr,remoteSocket,remoteAddr))thd.daemon=True #设置daemon=True会标记其为守护线程,如果剩下的线程只有守护线程时,整个python程序都会退出thd.start()
http://www.lryc.cn/news/399548.html

相关文章:

  • opencv 中如何通过欧式距离估算实际距离(厘米)
  • Flask+Layui开发案例教程
  • 复现ORB3-YOLO8项目记录
  • 【jvm】字符串常量池问题
  • STM32学习和实践笔记(39):I2C EEPROM实验
  • 【Js】导出 HTML 为 Word 文档
  • c++入门基础篇(上)
  • Java实现数据结构——双链表
  • Python应用爬虫下载QQ音乐歌曲!
  • AWS-WAF-Log S3存放,通过Athena查看
  • 无法解析主机:mirrorlist.centos.org Centos 7
  • 自动驾驶论文总结
  • 【uniapp微信小程序】uniapp微信小程序——页面通信
  • 【笔记】从零开始做一个精灵龙女-画贴图阶段(上)
  • 线性代数|机器学习-P22逐步最小化一个函数
  • SpringCloudAlibaba Nacos配置中心与服务发现
  • .NET 一款获取内网共享机器的工具
  • 备考美国数学竞赛AMC8和AMC10:吃透1850道真题和知识点(持续)
  • 旅游景区度假村展示型网站如何建设渠道品牌
  • Python酷库之旅-第三方库Pandas(021)
  • jvm 06 补充 OOM 和具体工具使用
  • 使用机器学习 最近邻算法(Nearest Neighbors)进行点云分析 (scikit-learn Open3D numpy)
  • 安装jenkins最新版本初始化配置及使用JDK1.8构建项目详细讲解
  • 微软子公司Xandr遭隐私诉讼,或面临巨额罚款
  • 【VRP】基于常春藤算法IVY求解带时间窗的车辆路径问题TWVRP,最短距离附Matlab代码
  • 常用软件的docker compose安装
  • Excel第28享:如何新建一个Excel表格
  • 计算机网络知识汇总
  • 数据结构——考研笔记(二)线性表的定义和线性表之顺序表
  • quota使用