首页 > 编程语言 >python语言实现_通过端口转发实现跨网络(多网络之间)通信_science_network

python语言实现_通过端口转发实现跨网络(多网络之间)通信_science_network

时间:2024-11-30 09:35:33浏览次数:4  
标签:target python science 端口 网络 client 转发 port socket

本文使用python语言实现了一个端口转发的程序,该程序可以实现多网络之间的信息通信,当然这里有个前提,那就是多个网络都在一台主机上有可以连通的端口。


之所以有这个编写代码的需求,是因为最近使用的science network工具不大好用了,于是就要博士同学发给我一个好用些的来,固然发现同学用的那个工具更好用,效果如下:

image-20241130090741916


虽然这个工具好用,但是用着用着就发现了问题,那就是这个工具只能支持本机上网,而和其他的同类工具不同,其他的同类工具都是可以支持局域网中其他主机的请求的,而这个就导致了一定的问题,比如我需要使用GitHub,使用huggingface,等等,而我一般都是在workstation上用这些应用的,而workstation上的系统又是Linux系统,而这个朋友发给我的这个工具又是只能运行在Windows系统上的,并且最为可气的是这个工具只接收localhost的端口转发,而不能只是局域网中其他主机的请求的,这样就导致我的工作电脑(Linux系统)是无法通过这个工具来连接huggingface这样的应用的,为此就想到了自己编写一个代码来实现这中间的gap。


一开始想的是自己手动编写这样的代码,但是考虑到比较耗时,并且个人使用,也不需要什么代码优化,也不追求什么性能,于是就想到了使用ChatGPT来自动生成一个,于是得到了下面的代码:

import socket
import threading

# 转发函数
def forward(source, destination):
    while True:
        try:
            data = source.recv(4096)
            if not data:
                break
            destination.sendall(data)
        except Exception as e:
            print(f"Connection error: {e}")
            break

# 处理单个客户端连接
def handle_client(client_socket, target_host, target_port):
    try:
        # 连接到目标地址
        target_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        target_socket.connect((target_host, target_port))
        
        # 创建两个线程:分别转发客户端到目标和目标到客户端的数据
        threading.Thread(target=forward, args=(client_socket, target_socket)).start()
        threading.Thread(target=forward, args=(target_socket, client_socket)).start()
    except Exception as e:
        print(f"Error handling client: {e}")
        client_socket.close()

# 主端口转发逻辑
def start_port_forwarding(local_host, local_port, target_host, target_port):
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind((local_host, local_port))
    server.listen(15)
    print(f"[*] Listening on {local_host}:{local_port} and forwarding to {target_host}:{target_port}")

    while True:
        client_socket, addr = server.accept()
        print(f"[*] Accepted connection from {addr}")
        threading.Thread(target=handle_client, args=(client_socket, target_host, target_port)).start()

if __name__ == "__main__":
    # 配置端口转发信息
    LOCAL_HOST = "0.0.0.0"  # 本地监听地址
    LOCAL_PORT = 8888       # 本地监听端口
    TARGET_HOST = "127.0.0.1"  # 目标地址(替换为实际地址)
    TARGET_PORT = 33210           # 目标端口

    # 启动端口转发
    start_port_forwarding(LOCAL_HOST, LOCAL_PORT, TARGET_HOST, TARGET_PORT)

事实证明ChatGPT自动生成的这个端口转发代码还是比较好用的,这样就可以在个人手机上也可以看YouTube了。


这里需要注意的是端口的设置,我们可以看到下图中这个工具的本地接受的端口号为HTTP下的33210,于是在我们的这个代码中就需要将TARGET_PORT设置为33210,由于是本地的端口转发,因此本地的IP设置为127.0.0.1,由于我们的这个代码实现的是对局域网中的请求的接收并转发给TARGET_PORT,因此我们的LOCAL_HOST需要设置为0.0.0.0,这样就可以接收局域网中的请求,而如果设置为“127.0.0.1”,那么依然无法实现对局域网中请求的接收。我们的LOCAL_PORT的设置可以比较随意,这个端口号是暴露给局域中的其他主机进行网络设置时使用的。

image-20241130091546968


其他主机上(局域网中其他主机)的网络设置:

image-20241130092119258

这里的IP:192.168.1.110,就是运行这个代码和这个science network的工具的Windows主机的IP地址。



个人github博客地址:
https://devilmaycry812839668.github.io/

标签:target,python,science,端口,网络,client,转发,port,socket
From: https://www.cnblogs.com/xyz/p/18578028

相关文章

  • 网络安全运行与维护高级 - 题库汇总百题
    1.单选题内部信息安全管理组织中的()担负保护系统安全的责任,但工作重点偏向于监视系统的运行情况,并且对安全管理制度的贯彻执行情况进行监督和检查。A.安全审查和决策机构B.安全主管机构C.安全运行维护机构D.安全审计机构正确答案:D2.单选题下列那个选项不属于内部......
  • 20222424 2021-2022-2 《网络与系统攻防技术》实验七实验报告
    202224242021-2022-2《网络与系统攻防技术》实验七实验报告1.实验内容1.1本周学习内容Web安全基础/前后端SQL注入原理XSS脚本攻击CSRF漏洞1.2实验内容及要求本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有(1)简单应用SET工具建......
  • 20222409 2024-2025-1 《网络与系统攻防技术》实验五实验报告
    1.实验内容1.1本周学习内容本周学习了信息收集与渗透测试相关技术,主要包括Metasploit、nmap和Nessus的使用。Metasploit是渗透测试框架,能提供多种攻击模块,如远程代码执行、提权和后渗透功能(如键盘记录、文件操作等),可用于模拟攻击和漏洞利用;nmap被用于扫描目标主机的端口和服......
  • springboot庀材二手房交易平台--41611(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、
    摘要在互联网飞速发展的当下,开发庀材二手房交易平台是为了利用互联网和科学技术来满足二手房交易市场日益增长的需求,提供一个方便快捷的平台供用户进行二手房交易。通过开发此系统,可以解决传统二手房交易中信息不透明、中介费高昂等问题,提供更便捷、透明、安全的交易环境。......
  • 【纯干货分享】计算机毕业设计必看必学36113+PHP 高校成绩管理系统原创的定制程序,单
     高校成绩管理系统的设计与实现摘 要随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用PHP技术建设高校成绩管理系统。本设计主要实现集人性化、高效......
  • 【纯干货分享】计算机毕业设计必看必学(44127+spark 手机销售数据的可视化分析系统)原创
    spark手机销售数据的可视化分析系统摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对手机销售数据管理等问题,对手机销售数据管理进行研究分......
  • 【纯干货分享】计算机毕业设计必看必学30973+springboot 个人健康管理系统小程序原创
    摘 要随着中国经济的飞速增长,消费者的智能化水平不断提高,许多智能手机和相关的软件正在得到更多的关注和支持。其中,微信小程序的个人健康管理系统更是深得消费者的喜爱,它的出现极大地改善了消费者的生活质量,同时,它还创造了一种快捷、有效的数据信息管理网络平台,让消费者更......
  • 网络编程
    某大厂面试的时候好像提到了一嘴网络编程,但是我又不确定了,网络编程到底是个啥。我就记得要恶补,要研究开源软件,项目的东西太垃圾了,人家没地方问。数学学的也不咋地,就是高中的加减乘除回溯的题也没做出来,做出来可能会好一些吧。你要开发什么,你怎么和同事进行技术上的交流,一些通......
  • 20222427 2024-2025-1 《网络与系统攻防技术》实验七实验报告
    1.实验内容1.1本周学习内容本周学习了有关Web安全的相关知识,复习了一些有关于Web的基础知识,比如:前、后端的定义,以及在前后端各自使用的语言,如:html、css、JS(前端);C/C++、Python、Java、Go、Php(后端)等。学习了有关于数据库攻击的一些基本操作,如:SQL注入。1.2实验要求及内......
  • python毕设 药店药品信息管理系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于药店药品信息管理系统的研究,现有研究主要以传统的药品管理模式为主,专门针对利用Python开发的药店药品信息管理系统的研究较少。在......