为什么socket.gethostbyname(socket.gethostname)仅绑定到本地IP地址?

问题描述 投票:0回答:1

我正在编写一个套接字程序来创建一个简单的服务器。当我写ip = socket.gethostbyname(socket.gethostname())然后打印ip时,它会打印127.0.1.1为什么这种情况不断发生?我的设备已连接到移动热点连接,但本地主机的IP地址仍然保留。我正在使用ubuntu 19.04 OS

python sockets ubuntu localhost ip-address
1个回答
0
投票

问题是主机具有多个接口。这不是问题,因为您使用的是真实的DNS或经过仔细手写的/ etc / host文件,因为这样系统会在其中查找翻译。但是根据配置,主机名可以绑定到所有可用接口,包括环回接口。 gethostbyname以其自己的顺序返回这些接口中第一个的地址。

为了确保这一点,您应该使用gethostbyname_ex返回所有接口的列表,并且除了环回接口之外,还应该找到连接的主机点。

© www.soinside.com 2019 - 2024. All rights reserved.