我正在编写一个套接字程序来创建一个简单的服务器。当我写ip = socket.gethostbyname(socket.gethostname())
然后打印ip时,它会打印127.0.1.1
为什么这种情况不断发生?我的设备已连接到移动热点连接,但本地主机的IP地址仍然保留。我正在使用ubuntu 19.04 OS
问题是主机具有多个接口。这不是问题,因为您使用的是真实的DNS或经过仔细手写的/ etc / host文件,因为这样系统会在其中查找翻译。但是根据配置,主机名可以绑定到所有可用接口,包括环回接口。 gethostbyname
以其自己的顺序返回这些接口中第一个的地址。
为了确保这一点,您应该使用gethostbyname_ex
返回所有接口的列表,并且除了环回接口之外,还应该找到连接的主机点。