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

时间:2015-11-17 17:11:54

标签: python tcp server raspberry-pi

我是新来的,所以,如果我是愚蠢的话,请不要生气 - 但我不知道。 我想制作一个python TCP服务器,可以通过外部(公共)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()

1 个答案:

答案 0 :(得分:0)

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