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.mzph.cn/pingmian/45391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPT的架构与应用 - Transformer教程

在过去的几年里,人工智能技术取得了巨大的进展,其中最引人注目的成就是生成式预训练变换器(GPT)的出现。GPT是一种基于Transformer架构的模型,已在自然语言处理(NLP)领域掀起了革命性变化。今天…

springboot vue 实现验证码

要在Spring Boot和Vue.js中实现验证码功能&#xff0c;可以按照以下步骤进行操作&#xff1a; 在Spring Boot项目中添加验证码相关的依赖。可以使用Google的Kaptcha库来生成验证码图片。在pom.xml中添加以下依赖&#xff1a; <dependency><groupId>com.github.pe…

安全开发--多语言基础知识

注释&#xff1a;还是要特别说明一下&#xff0c;想成为专业开发者不要看本文&#xff0c;本文是自己从业安全以来的一些经验总结&#xff0c;所有知识点也只限于网络安全这点事儿&#xff0c;再多搞不明白了。 开发语言 笼统的按照是否编译成机器码分类开发语言&#xff0c;…

Perl 语言开发(十二):面向对象编程,深入理解与实践

目录 1. 概述 2. 面向对象编程基础 2.1 类与对象的基本概念 3. Perl中的面向对象编程 3.1 定义类和对象 3.1.1 创建类 3.1.2 创建对象 3.2.1 访问器和修改器 3.3 继承 3.3.1 创建基类 3.3.2 创建子类 3.3.3 使用继承 3.4 多态 3.4.1 方法重写 3.4.2 动态绑定 4…

git常用命令及git分支

git常用命令及git分支 git常用命令设置用户签名初始化本地库查看本地库状态将文件添加到暂存区提交到本地库查看历史记录版本穿梭 git分支什么是分支分支的好处分支的操作查看分支创建分支切换分支合并分支合并冲突 git常用命令 设置用户签名 //设置用户签名 git config --gl…

linux-conda环境安装教程

Linux Conda 环境安装教程 本文档详细介绍了在 Linux 系统上安装和使用 Conda 环境的步骤。 1. 安装 Conda 1.1 下载 Anaconda 安装包 首先&#xff0c;访问 Anaconda 官方网站 并下载适用于 Linux 系统的 Anaconda 安装包。 或者使用以下命令直接从终端下载&#xff1a; …

Datawhale 2024 年 AI 夏令营第二期——基于术语词典干预的机器翻译挑战赛

#AI夏令营 #Datawhale #夏令营 1.赛事简介 目前神经机器翻译技术已经取得了很大的突破&#xff0c;但在特定领域或行业中&#xff0c;由于机器翻译难以保证术语的一致性&#xff0c;导致翻译效果还不够理想。对于术语名词、人名地名等机器翻译不准确的结果&#xff0c;可以通…

emqx 负载均衡配置 HAProxy 健康检查 轮询 haship

HAProxy配置文件 配置文件&#xff1a; /etc/haproxy/haproxy.cfg 负载均衡参数&#xff1a; 轮询方式轮询注解roundrobin基于权重进行轮叫调度的算法&#xff0c;在服务器的性能分布比较均匀时&#xff0c;这是一种最公平合理&#xff0c;常用的算法。此算法使用较为频…

【银河麒麟高级服务器操作系统】数据中心系统异常卡死分析处理建议

了解银河麒麟操作系统更多全新产品&#xff0c;请点击访问&#xff1a;https://product.kylinos.cn 1.服务器环境以及配置 【机型】浪潮NF5280M5 处理器&#xff1a; Intel 内存&#xff1a; 1T 【内核版本】 4.19.90-24.4.v2101.ky10.x86_64 【OS镜像版本】 银河麒麟…

PDF 中图表的解析探究

PDF 中图表的解析探究 0. 引言1. 开源方案探究 0. 引言 一直以来&#xff0c;对文档中的图片和表格处理都非常有挑战性。这篇文章记录一下最近工作上在这块的探究。图表分为图片和表格&#xff0c;这篇文章主要记录了对表格的探究。还有&#xff0c;我个人主要做日本项目&…

MFC Ribbon菜单 - 中英文实时切换方法

简介 最近在搞一个老外的项目&#xff0c;本来谈的好好的&#xff0c;纯英文界面。项目接近尾声了&#xff0c;又提出了中英文实时切换的新需求&#xff0c;没办法就只能想办法&#xff0c;毕竟客户最大嘛。 实现方法 还好本来的ribbon英文菜单不复杂&#xff0c;就用纯C编码…

Android上如何使用perfetto分析systrace

Android上如何使用perfetto分析systrace Perfetto 是一个用于性能分析的工具&#xff0c;提供了对 Android 系统内部工作情况的详细视图。它可以用来替代传统的 systrace 工具&#xff0c;提供更加全面的性能分析功能。以下是如何使用 Perfetto 分析 Systrace 数据的详细指南&…

粉丝问我:大龄干运维还有出路吗?

这兄弟&#xff1a; 18年参加培训班&#xff0c;培训的java&#xff0c;结果学的不好。又去机构学了linux云计算&#xff0c;去做了运维&#xff0c;19年去一家网络公司做了idc&#xff0c;可以说这两年自己不努力&#xff0c;什么都没学到&#xff0c;基本等于零。 我现在就…

Python轻松添加行编号到Word文档及删除行编号

Word文档中的行号&#xff08;行编号&#xff09;功能是对于精细化的文档编辑以及解析非常有用的功能。添加行号能够极大地提升文档的可读性和定位效率&#xff0c;尤其是在需要引用特定行内容时&#xff0c;为读者提供了清晰的指引&#xff0c;避免了不必要的混淆和误解。然而…

Java BigInteger 类

目录 BigInteger 1. 如何获取一个BigInteger类型的对象&#xff1f; &#xff08;1&#xff09;构造方法 &#xff08;2&#xff09;静态方法 2. 常用方法 BigInteger 可以用来表示很大很大的数&#xff0c;有多大都可以。通过创建对象调用相应的方法。详见&#xff1a;…

【深度学习】本地运行 GraphRAG + Ollama

随着人工智能不断革新各个行业&#xff0c;对高效且经济的解决方案的需求日益增长。GraphRAG Local Ollama 应运而生&#xff0c;它是一款强大的 Microsoft GraphRAG 改进版&#xff0c;集成了使用 Ollama 下载的本地模型。这种改进让您可以告别昂贵的 OpenAPI 模型&#xff0c…

45、tomcat+课后实验

tomcat 1、tomcat tomcat和php一样&#xff0c;都是用来处理动态页面的。 tomcat也可以作为web应用服务器&#xff0c;开源的。 php .php tomcat .jsp nginx .html tomcat 是用Java代码写的程序&#xff0c;运行的是Java的web应用程序。 tomcat的特点和功能&#xff1a…

前端调试技巧(npm Link,vscode调试,浏览器调试等)

Npm Link 功能&#xff1a; 在本地开发npm模块的时候&#xff0c;我们可以使用npm link命令&#xff0c;将npm 模块链接到对应的运行项目中去&#xff0c;方便地对模块进行调试和测试 断点调试 vscode调试 Debug Vue2 Project 目标&#xff1a;在VSCode中调试项目代码…

DockerFile文件解析

DockerFile 要研究自己如何做一个镜像&#xff0c;而且微服务项目打包上云部署&#xff0c;Docker就是最方便的。 微服务打包成镜像&#xff0c;任何装了Docker的地方&#xff0c;都可以下载使用&#xff0c;极其的方便。 流程&#xff1a;开发应用>DockerFile>打包为…

vue3 高德地图api加载热力图及关闭 JSAPI v1.4.15

高德地图api加载天地图和2D热力图及关闭 JSAPI v1.4.15 地图API地址 [http://lbs.tianditu.gov.cn/server/MapService.html](http://lbs.tianditu.gov.cn/server/MapService.html)高德地图2D热力图地址 [https://lbs.amap.com/demo/loca-api/demos/loca_heatmap/loca_heatmap_…