0x8915有什么用?

时间:2017-08-26 05:30:30

标签: python sockets

#我不明白返回语句后面的代码如何     帮助获取给定接口的IP地址以及有什么用处     0x8915 ??

 #!/usr/bin/env python

 import argparse
 import sys
 import fcntl
 import struct
 import array
 import socket

 def get_ip_address(ifname):
   #interfaces = list_interfaces()
   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])

 if __name__ == '__main__':
   parser = argparse.ArgumentParser(description='Python 
 networkingutils')
   parser.add_argument('--ifname', action="store", dest="ifname", 
 required=True)
   given_args = parser.parse_args()
   ifname = given_args.ifname
   print "Interface [%s] --> IP: %s" %(ifname, get_ip_address(ifname))


The output of this script is shown in one line, as follows:
$ python 3_5_get_interface_ip_address.py --ifname=eth0
Interface [eth0] --> IP: 10.0.2.15
      -

1 个答案:

答案 0 :(得分:1)

0x8915是Linux SIOCGIFADDR的值。不幸的是,它在这个python代码中是硬编码的,没有任何影响代码可读性的注释。在ioctl中使用SIOCGIFADDR来获取接口的IP地址。有关更多信息,请参阅this documentation或查看{C}中比您引用的python代码更易读的this code。{/ p>