As is known to all, 通过socket可以获取本机IP
import socket
myhost=socket.gethostname()
myip=socket.gethostbyname(myhost)
myip
但是获取到的IP通常不是实际应用中需要的!
WIN10
CMD中获得的IP
但是根据socket指令获取的...
LINUX
终端获取的IP
根据socket指令获取的...
待解决问题:为什么会这样?
通过gethostbyname_ex
指令可以看到本机的所有IP,但是为什么gethostbyname
指令显示出的IP并不是我们想要的呢?
通过网上的搜索,我找到了如下的程序可以获得本机的正确IP
import socket
def get_host_ip():
"""
查询本机ip地址
:return: ip
"""
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
finally:
s.close()
return ip
if __name__ == '__main__':
print(get_host_ip())
附一张整体效果图
网友评论