2
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()功能?

4

1 回答 1

0

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

于 2015-04-20T18:57:58.897 回答