首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何确定IP地址是否属于具有python2的网络?

如何确定IP地址是否属于具有python2的网络?
EN

Stack Overflow用户
提问于 2016-05-04 15:47:45
回答 2查看 5.1K关注 0票数 0

如果我们有一个IP地址,如192.168.1.168。我们有一个由192.168.1.0/24表示的网络

有没有好的方法(用最少的代码)来确定ip是否属于该网络?

netaddr模型似乎可以,但没有弄清楚是如何做到的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-04 16:45:03

代码语言:javascript
复制
import netaddr

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

print ip in network
票数 2
EN

Stack Overflow用户

发布于 2016-05-04 16:15:41

代码语言:javascript
复制
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+中要容易得多:

代码语言:javascript
复制
import ipaddress

def in_net(ip, net):
    return ipaddress.ip_address(ip) in ipaddress.ip_network(net)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37021569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档