免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9572 | 回复: 10
打印 上一主题 下一主题

windows下怎么获得本机IP地址? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-02 16:54 |只看该作者 |倒序浏览
从网上没找到好用的办法,有一个是访问一个类似ip138的网站,那个网站会显示访客的IP地址,然后把那个网站上显示的IP地址采集过来,我觉得那种方法太山寨了,万一那个网站挂了……

论坛徽章:
0
2 [报告]
发表于 2010-03-02 17:15 |只看该作者
>>> import socket
>>> ip = socket.gethostbyname(socket.gethostname())

论坛徽章:
0
3 [报告]
发表于 2010-03-02 17:20 |只看该作者

论坛徽章:
0
4 [报告]
发表于 2010-03-02 17:23 |只看该作者
我用ipconfig命令获得下面的信息
Microsoft Windows [版本 6.1.7600]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>ipconfig

Windows IP 配置


PPP 适配器 宽带连接:

   连接特定的 DNS 后缀 . . . . . . . :
   IPv4 地址 . . . . . . . . . . . . : 119.178.117.2
   子网掩码  . . . . . . . . . . . . : 255.255.255.255
   默认网关. . . . . . . . . . . . . : 0.0.0.0

以太网适配器 本地连接:

   连接特定的 DNS 后缀 . . . . . . . :
   自动配置 IPv4 地址  . . . . . . . : 169.254.231.236
   子网掩码  . . . . . . . . . . . . : 255.255.0.0
   默认网关. . . . . . . . . . . . . :


楼上的方法获得的IP地址是“以太网适配器 本地连接”里面的,事实上我的外网IP地址是“PPP 适配器 宽带连接”里面的IP,当然我也可以用
  1. import os
  2. myip = os.popen("ipconfig").read()
  3. print myip
复制代码
这样调用系统命令,然后用正则分析里面的IP,但windows不同的版本ipconfig返回的内容都不一样,比如windows 7返回的是带汉字的,以前的版本返回的是英文的信息

论坛徽章:
0
5 [报告]
发表于 2010-03-02 17:36 |只看该作者
从网上找到一种windows和Linux下通行的方法
  1. import re,urllib2
  2. print re.search('\d+\.\d+\.\d+\.\d+',urllib2.urlopen("http://www.whereismyip.com").read()).group(0)
复制代码
只能寄希望www.whereismyip.com别挂掉了,或者在程序里面加个判断,www.whereismyip.com挂掉了就采集www.ip138.com返回的内容,总觉得这样有点山寨,软件在运行之前还得先访问别的网站一次{:3_183:}

论坛徽章:
0
6 [报告]
发表于 2010-03-03 01:10 |只看该作者
回复 5# 盖茨他爹


    二楼的方法不行么?

论坛徽章:
0
7 [报告]
发表于 2010-03-03 10:18 |只看该作者
回复  盖茨他爹


    二楼的方法不行么?
jjj137 发表于 2010-03-03 01:10



沒有router 行, 有 router 只會顯示內網 ip ... 所以也只可以用 "山寨" 方法了

论坛徽章:
0
8 [报告]
发表于 2010-03-03 11:02 |只看该作者
回复 7# eookoo


    哦,外网 IP 从内部肯定是获取不到的了。

论坛徽章:
0
9 [报告]
发表于 2010-03-04 11:12 |只看该作者
回复 5# 盖茨他爹


   判断一下系统类型,用不同的办法不行么?

论坛徽章:
0
10 [报告]
发表于 2010-03-08 15:15 |只看该作者
  1. import socket
  2. ip_list=socket.getaddrinfo(socket.gethostname(),None)
  3. for i in range(len(ip_list)):
  4.         print (ip_list[i][4][0])
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP