码迷,mamicode.com
首页 > 编程语言 > 详细

python获取本地ip

时间:2015-08-26 01:23:03      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

def get_ip_address(ifname):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    return socket.inet_ntoa(fcntl.ioctl(s.fileno(),0x8915,struct.pack(256s, ifname[:15]))[20:24])

 

1.套接字

2.通常,非Python程序以32位字节包的形式存储和使用IP地址。inet_aton(ip_addr)和inet_ntoa(packed)函数在这个形式和IP地址间作转换:http://blog.sina.com.cn/s/blog_6d0599f90100rlem.html

>>> socket.inet_aton(192.169.137.77)
\xc0\xa9\x89M

 

3.文件描述符与一个真实的socket连接,而非一个文件。socket对象的fileno()方法返回关于这个socket的文件描述符。

4.linux里面提供了mac地址和ip地址获取的ioctl参数;

#define SIOCGIFADDR 0x8915      /* get PA address       */

#define SIOCSIFADDR 0x8916      /* set PA address       */

#define SIOCSIFHWADDR   0x8924      /* set hardware address     */

#define SIOCGIFHWADDR   0x8927      /* Get hardware address     */

5. struct.pack用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这里的字符串理解为字节流,或字节数组)。其函数原型为:struct.pack(fmt, v1, v2, ...),参数fmt是格式字符串,关于格式字符串的相关信息下面有所介绍。v1, v2, ...表示要转换的python值。http://blog.sina.com.cn/s/blog_4b5039210100f1tu.html

6.ioctl()。 http://blog.csdn.net/shanshanpt/article/details/19897897

 

python获取本地ip

标签:

原文地址:http://www.cnblogs.com/yeming/p/4759047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!