python通过socket模块获取本机主机名和IP地址

版权声明:转载请注明作者(独孤尚良dugushangliang)出处: https://blog.csdn.net/dugushangliang/article/details/90021409

 

先说说查看本机ip的方法:

可以直接通过搜索引擎搜索ip,得到的是公网ip,你是用这个ip上网的,即和互联网交互的。

但奇怪的是,有的是180开头有的是218开头。这个有些奇怪。鄙人水平不足,先存疑待考吧。

本机是通过路由器联网的,不是直接通过拨号连接互联网的,所以本机有局域网的ip,即路由器分配给本机的ip。

局域网ip如何查看呢?cmd打开,输入ipconfig,执行即可查看。

为什么有三个ip呢?因为前两个是虚拟机的,因为本机有安装虚拟机所以不止一个ip,我们本机的ip就是“无线局域网适配器 WLAN”的ip——192.168.1.2。

那么怎么通过python获取到这个ip地址呢?

找了好久的帖子,也遇到了不少的长篇大论。但python的宗旨是什么?可以移步这里看:https://www.hocoding.com/p/504.html,下面是其中的一句:

这就好比国粹所言:顷刻间千秋事业,方寸地万里江山;三五步行遍天下,六七人百万雄兵。

这么简单的事情,弄很长的代码,也太扫兴了。寻寻觅觅,踏破铁鞋,结果如下:

附注:本机windows系统,python3环境。

参考1:https://www.cnblogs.com/xcfree/p/5045415.html

import socket
print(socket.gethostbyname(socket.gethostname()))

其结果如下:

显然不是我们想要的。没装虚拟机的也许这里就得到了正确答案。

参考2:https://www.cnblogs.com/chenjingyi/p/5741742.html

import socket
myname = socket.getfqdn(socket.gethostname(  ))
myaddr = socket.gethostbyname(myname)
print(myname,myaddr)

其结果如下:

这个和第一个一样。

参考3:https://blog.51cto.com/laobaiv1/1956093

import socket
hostname = socket.gethostname()
print ( "Host name: %s" %hostname)
sysinfo = socket.gethostbyname_ex(hostname)
ip_addr = sysinfo[2]
for ip in ip_addr:
    print(ip)

其结果如下:

这个得到了我们想要的ip。

因为每台机器的情况不同,如本机联网方式、本机是否虚拟机、本机是否有安装虚拟机等,ip的获取得因地制宜。

 

独孤尚良dugushangliang——著

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值