【发布时间】:2016-02-19 04:22:49
【问题描述】:
我是新来的,所以如果我很愚蠢,请不要生气 - 但我不知道。 我想做一个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()
【问题讨论】:
-
您的服务器是直接连接到互联网,还是通过防火墙、路由器等?
-
它通过以太网电缆连接到路由器。我对防火墙一无所知。
-
路由器可能有一个正在运行的内置防火墙。您需要查看该路由器的手册以了解如何添加端口转发。路由器提供网络地址转换 (NAT),它需要知道何时从外部访问端口 42424,它应该将请求发送到哪台机器(在路由器的防火墙后面)。
-
正如我所说,我有一个端口 - 42424 - 是端口转发的。应该这样做。我在我的路由器设置中并进行了设置。
-
你想在你的服务器上得到什么你不能做到的?
标签: python tcp server raspberry-pi