Python 服务器 可从任何地方访问的 TCP 服务器(通过外部 IP,完成端口转发)

Python server TCP server accessable from anywhere (via external IP, port forwarding is done)

我是新来的,如果我很笨,请不要生气 - 但我不知道。 我想制作一个 python TCP 服务器,可以通过外部 (public) IP 从任何地方访问它。我已经通过本教程在本地网络中完成了简单的服务器(它可以工作): https://www.youtube.com/watch?v=XiVVYfgDolU 客户端发送字符串,服务器发回该字符串,但大写。

现在我想做同样的事情,但可以从任何地方访问。我读了很多。我有 Raspberry Pi,我在其中设置了静态 IP 地址并进行了端口转发(在端口 42424 上)。我只是在寻找一些教程,你可以在任何地方指导我——这就是我所需要的。或者你可以告诉我如何一步一步做,但我知道写答案需要很多时间。我尝试使用谷歌搜索,但没有找到任何东西。如果我这样做了,那是一个不知道外部 IP 和端口转发是什么的人,所以谈话的结尾是:了解什么是端口转发。

所以,请给我一些如何操作的提示,或者指导我去某个地方。谢谢!

代码

服务器:

import socket

def Main():
    host = '10.0.0.140'
    port = 42424
    s = socket.socket()
    s.bind((host, port))

    s.listen(1)
    c, addr = s.accept()
    while True:
        data = c.recv(1024)
        if not data:
            break
        data = str(data).upper()
        c.send(data)
    c.close()
if __name__ == '__main__':
    Main()

客户:

import socket

def Main():
    host = '10.0.0.140'
    port = 42424 
    s = socket.socket()
    s.connect((host,port))
    message = raw_input("->") 
    while message != 'q':
        s.send(message)
        data = s.recv(1024)
        message = raw_input("->")
    s.close()

if __name__ == '__main__':
    Main()

当连接到 NAT firewall/router 后面的服务器时,除了端口转发之外,客户端还应该被定向到路由器 IP 地址。对于客户端而言,路由器的IP地址就是服务器。路由器只是根据端口转发规则转发流量。