为什么可以';人们是否与此联系;服务器";用python套接字制作? 导入套接字 主机,端口=socket.gethostbyname(socket.gethostname()),5555 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s、 setsockopt(socket.SOL_socket,socket.SO_REUSEADDR,1) s、 绑定((主机、端口)) s、 听(5) 尽管如此: conn,addr=s.accept() 打印(“+addr[0]”) r=conn.recv(1024) 打印(r.decode(“utf-8”)) 答复=“1” HTTP/1.1200ok 记录器 """ conn.sendall(字节(响应,“utf-8”)) 康涅狄格州关闭

为什么可以';人们是否与此联系;服务器";用python套接字制作? 导入套接字 主机,端口=socket.gethostbyname(socket.gethostname()),5555 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s、 setsockopt(socket.SOL_socket,socket.SO_REUSEADDR,1) s、 绑定((主机、端口)) s、 听(5) 尽管如此: conn,addr=s.accept() 打印(“+addr[0]”) r=conn.recv(1024) 打印(r.decode(“utf-8”)) 答复=“1” HTTP/1.1200ok 记录器 """ conn.sendall(字节(响应,“utf-8”)) 康涅狄格州关闭,python,sockets,networking,ip,Python,Sockets,Networking,Ip,PS:代码不是我的,它来自youtube的IP抓取器教程。不,我不是一个脚本小子,我只是想通过一个例子来理解获取IP/制作带有套接字的web服务器的概念。当我在我的机器上运行socket.gethostbyname(socket.gethostname())时,我刚刚开始学习sockets。如果您也是这样,那么您只绑定到localhost接口,因此您只能从自己的计算机访问服务器 要允许通过任何(IPv4)接口进行连接,您需要使用0.0.0.0: 主机,端口='0.0.0.0',5555 然后,

PS:代码不是我的,它来自youtube的IP抓取器教程。不,我不是一个脚本小子,我只是想通过一个例子来理解获取IP/制作带有套接字的web服务器的概念。当我在我的机器上运行
socket.gethostbyname(socket.gethostname())
时,我刚刚开始学习sockets

。如果您也是这样,那么您只绑定到localhost接口,因此您只能从自己的计算机访问服务器

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

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

此服务器位于您的本地网络上。这或多或少意味着,通过与您的计算机相同的路由器连接到internet的人将能够通过搜索
来访问您的服务器


但是,您的服务器未连接到Internet,因此来自外部的人将无法连接到您的服务器。如果是这样的话,你可以在线“购买”服务器(例如,你可以看看,但有很多)

你有本地网络,然后是互联网。它们都是连接的,但是你的路由器有防火墙保护你。启用端口转发将使计算机暴露于internet,但也意味着来自外部的人可以连接到您计算机上的某些内容。在您的路由器设置中,应该有一个选项,可以将您的计算机和特定端口进行端口转发。这将是您打开python服务器的端口。
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()