gpt4 book ai didi

Python SocketServer - 获取自己的IP

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:31 27 4
gpt4 key购买 nike

我正在使用 Python3 的 socketserver 模块创建一个简单的 TCP 服务器。我想获取服务器所服务的服务器的 IP。

我注意到 socketserver(而不是 BaseServer)中有一个 server_address 属性,但它会为 IP 返回“0.0.0.0”。我也试过使用 socket 对象并运行 gethostbyname(),但是 python 说 socket 对象没有属性 gethostbyname。示例:

server = socketserver.TCPServer(...)
print(server.server_address) # gives me ('0.0.0.0', [correct port])
print(server.socket.gethostbyname()) # AttributeError

据我所知,0.0.0.0 是为“未知”保留的,因此服务器看不到它的 IP。那是对的吗?可能的解决方案是什么?

最佳答案

如果没有外部服务器的帮助,这是不可能的,因为在您和另一台计算机之间可能存在任意数量的网络地址转换器 (NAT)。我想如果您使用某种自定义协议(protocol),您可以要求客户端断言它所连接的地址。

考虑到这一点(许多人会认为这是 hack),但这可以说是唯一的方法 - 你可以这样做:

import urllib.request
external_ip = urllib.request.urlopen('http://ifconfig.me/ip').read()

关于Python SocketServer - 获取自己的IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22997717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com