为什么人们无法连接到这个用 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,但是有很多)
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,但是有很多)