首页 > 解决方案 > 使用套接字的 Python 端口转发

问题描述

我正在努力做到这一点,以便我可以从世界各地的其他网络连接到此服务器,正如您在屏幕截图中看到的那样,前提是我设置了端口转发以将外部端口 6000 上的所有请求转发到我存储的静态 IP 地址主变量。

   

#This is my Server
    import socket
    import threading
   
    host = '192.168.1.135'
    port = 6000
   
    #s = socket.socket()
    s = socket.socket()#socket.AF_INET, socket.SOCK_STREAM)
    s.bind((host, port))
    s.listen()
   
    def send():
        mess = input("--> ")
        con.send(bytes(mess, 'utf-8'))
       
    def receive():
        msg = con.recv(1024)
        print(msg.decode('utf-8'))
       
    while True:
        try:
            con, address = s.accept()
            print(f'Connection to {address} made successfully!')
            receive()
            send()
        except:
            pass

这是我下面的客户端文件,出于明显的原因,我从主机变量中取出了我的公共 IP 地址...当我尝试在连接到网络时连接时,服务器在其上运行时连接正常,在它打印的服务器文件中ip address 它将我的网络网关地址显示为连接的 ip。但是当尝试从网络外部连接时,它不起作用!

   

    import socket
   
    host = 'public ip'; port = 6000
   
    def send():
        mess = input('--> ')
        s.send(bytes(mess,"utf-8"))
   
    def receive():
        msg = s.recv(1024)
        print(msg.decode('utf-8'))
   
           
    while True:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        try:
            s.connect((host, port))
            send()
            receive()
        except:
            pass

此链接将向您显示我在网络设置中设置的设置图片。

https://i.stack.imgur.com/TmNYc.png

我对整个“端口转发”的想法很陌生,但在尝试了数百种解决方案一周多之后似乎找不到问题似乎没有任何效果......如果您需要更多信息来帮助解决这个问题,请问,谢谢你!

标签: pythonpython-3.xnetworkingportforwardingpython-sockets

解决方案


(我还不能添加评论)首先尝试将服务器 ip 设置为“0.0.0.0”并尝试使用服务器和客户端上的端口 6000,不要使用不同的端口并转发不同的端口


推荐阅读