为什么人们无法连接到这个用 python 套接字制作的 "server"?

Why can't people connect to this "server" made with python sockets?

import socket

host, port = socket.gethostbyname(socket.gethostname()), 5555

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(5)


while True:
    conn, addr = s.accept()
    print("<IP-LOGGED> " + addr[0])
    r = conn.recv(1024)
    print(r.decode("utf-8"))

    response = """
HTTP/1.1 200 OK

logger

"""
    conn.sendall(bytes(response, "utf-8"))
    conn.close()

PS:代码不是我的,它来自 youtube IP 抓取器教程。不,我不是脚本小子,我只是想通过一个例子来理解获取 IP / 制作带有套接字的 Web 服务器的概念。我刚开始学习套接字

当我在我的机器上 运行 socket.gethostbyname(socket.gethostname()) 时,我得到 127.0.0.1。如果你也是这种情况,那么你只绑定到 localhost 接口,所以你只能从你自己的计算机访问你的服务器。

要允许通过任何 (IPv4) 接口进行连接,您需要使用 0.0.0.0:

host, port = '0.0.0.0', 5555

然后,您还可以从网络中的另一台计算机连接到您的服务器(如果您的路由器配置为将端口 5555 转发到您的计算机,甚至可以通过 Internet 连接)。

此服务器在您的本地网络上。这或多或少意味着,通过与您的计算机相同的路由器连接到 Internet 的人将能够通过搜索 <YOUR-IP-ADDRESS>:<PORT>.

来访问您的服务器

但是,您的服务器未连接到 Internet,因此外部人员将无法连接到您的服务器。如果愿意,您可以在线“购买”服务器(例如,您可以查看 https://www.heroku.com,但是有很多)