版权声明:转载请注明作者(独孤尚良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——著