使用python获取beagleboard的IP地址

时间:2015-04-19 05:34:31

标签: python beagleboneblack struct.pack

SIOCGIFADDR = 0x8915

def getIpAddr(iface = 'eth0'):

     ifreq = struct.pack('16sH14s', iface, socket.AF_INET, '\x00'*14)
     try:
         res = fcntl.ioctl(sock, SIOCGIFADDR, ifreq)
     except:
         return None   
     ip = struct.unpack('16sH2x4s8x', res)[2]
     return socket.inet_ntoa(ip)

在每一步中,函数的返回值是什么? 而且,什么是SIOCGIFADDR? 另外,为什么在[2]函数之后使用unpack()

1 个答案:

答案 0 :(得分:0)

SIOCGIFADDR:代表获取互联网接口地址的意思是'eth0'。 这是CPU宏,写在地址0x8915。 您无法访问该cpu地址,因此您必须使用参数进行打包和解压缩功能 “16sH2x4s8x” 你想从机器上的IP地址有4个字段,如“192.168.5.20” 因此需要(4 * 4)16同样搜索包解包功能的更多字段。