首页 » 信息技术 »

socket.gethostbyname_ex()在Ubuntu中不太好用

2019年4月28日 / 37次阅读
Python

记录一个发现的问题,socket.gethostbyname_ex函数在Ubuntu(虚拟机中)不好用的一个例子。

socket.gethostbyname_ex是socket.gethostbyname的扩展函数,后者返回一个ip地址,前者按照文档介绍,应该是返回一个ip list,即主机所有的ip地址都会出现的函数的执行结果中。

我在Ubuntu中做了个测试,发现不行,没有找到原因。

这台Ubuntu虚拟机有两个ip地址:

xinlin@ubuntu:~/gas$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:70:b0:bb brd ff:ff:ff:ff:ff:ff
inet 192.168.78.128/24 brd 192.168.78.255 scope global dynamic noprefixroute ens33
valid_lft 1740sec preferred_lft 1740sec
inet6 fe80::312f:14f6:3e3d:b5f2/64 scope link noprefixroute
valid_lft forever preferred_lft forever

但是socket.gethostbyname_ex函数只返回了一个ip地址:

>>> import socket
>>> socket.gethostname()
'ubuntu'
>>> socket.gethostbyname_ex('ubuntu')
('ubuntu', [], ['127.0.1.1'])

在Windows 10系统中,这个函数看起来就是正常的:

>>> import socket
>>> socket.gethostname()
'DESKTOP-LKS6V4S'
>>> socket.gethostbyname_ex('DESKTOP-LKS6V4S')
('DESKTOP-LKS6V4S', [], ['192.168.78.1', '192.168.153.1', '192.168.2.104'])

通过python获取本机网络IP地址的方法,请参考:Python获取本机网络IP的方法

本文链接:https://www.maixj.net/ict/socket-gethostbyname_ex-ubuntu-21071

相关文章

留言区


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top