2016-05-04 56 views

回答

1
import netaddr 

ip = netaddr.IPAddress('192.168.1.168').value 
network = netaddr.IPNetwork('192.168.1.0/24') 

if ip >= network.first and ip <= network.last: 
    print True 
else: 
    print False 
+1

虽然这段代码可能会回答这个问题,但提供 关于_why_和/或_how_的附加上下文会回答 这个问题会显着改善它的长期 值。请[编辑]你的答案,添加一些解释。 –

0
import socket 
import struct 

def in_net(ip, net): 
    ipaddr = socket.inet_aton(ip) 
    netaddr, netmask = net.split('/') 
    netaddr = socket.inet_aton(netaddr) 

    ipint = struct.unpack("!I", ipaddr)[0] 
    netint = struct.unpack("!I", netaddr)[0] 
    maskint = (0xFFFFFFFF << (32 - int(netmask))) & 0xFFFFFFFF 

    return ipint & maskint == netint 

在Python 3.3+得多:

import ipaddress 

def in_net(ip, net): 
    return ipaddress.ip_address(ip) in ipaddress.ip_network(net) 
+0

感谢。但你认为我的答案也能满足需要吗? –

+0

@KramerLi:如果OP愿意并且能够安装'netaddr'包,很可能。但它不是Python的一部分,因此它可能不适用于他们的系统。 –

+0

非常感谢 –