请教高手该如何判断IP属于哪个IP段。 编程语言不限。
IP10.130.6.9,ip段10.128.0.0/16ip段10.0.0.0/8请教高手该如何判断IP属于哪个IP段。编程语言不限。最好能详细说明算法。非常感谢西安_...
IP 10.130.6.9 ,
ip段10.128.0.0/16
ip段10.0.0.0/8
请教高手该如何判断IP属于哪个IP段。 编程语言不限。最好能详细说明算法。
非常感谢西安_白小鹏 的帮助,你让我看到了一种编程的思路,不过对于BASH SHELL编程来说,能否有精简的答案?? 展开
ip段10.128.0.0/16
ip段10.0.0.0/8
请教高手该如何判断IP属于哪个IP段。 编程语言不限。最好能详细说明算法。
非常感谢西安_白小鹏 的帮助,你让我看到了一种编程的思路,不过对于BASH SHELL编程来说,能否有精简的答案?? 展开
展开全部
下面是C#的实例,
参数sIP,IP地址,格式xx.xx.xx.xx
参数sNet,网络地址,格式xx.xx.xx.xx/xx
返回值 1--sIP属于sNet
0--sIP不属于SNet
其他--sIP地址或者sNet格式错误
private int CheckIPNet(string sIP, string sNet)
{
string[] asNetSplit = sNet.Split(new char[1] { '/' });
if (asNetSplit.Length!=2) return 101; //网络地址格式错误
string[] asNetAdd= asNetSplit[0].Split(new char[1] { '.' });
if (asNetAdd.Length!=4) return 102; //网络地址格式错误
UInt32 uiNetAdd= Convert.ToUInt32(asNetAdd[0])*0x1000000+
Convert.ToUInt32(asNetAdd[1]) * 0x10000 +
Convert.ToUInt32(asNetAdd[2]) * 0x100 +
Convert.ToUInt32(asNetAdd[3]);
string[] asIPAdd = sIP.Split(new char[1] { '.' });
if (asIPAdd.Length!=4) return 103; //IP地址格式错误
UInt32 uiIPAdd = Convert.ToUInt32(asIPAdd[0]) * 0x1000000 +
Convert.ToUInt32(asIPAdd[1]) * 0x10000 +
Convert.ToUInt32(asIPAdd[2]) * 0x100 +
Convert.ToUInt32(asIPAdd[3]);
UInt32 uiNetMask = (UInt32)0xffffffff<< Convert.ToInt16(asNetSplit[1]);
if ((uiIPAdd & uiNetMask) != (uiNetAdd& uiNetMask) )
return 0;
else
return 1;
}
给你一个linux c代码,不过没有环境测试,你可以自己验证一下
参数szip--ip地址,参数是sznet--网络地址,参数imaskcnt--网络掩码(取值范围1-32)
返回值 1--szip属于sznet
0--szip不属于sznet
int checkipnet(const char *szip,const char *sznet,int imaskcnt)
{
unsigned long ulip=inet_addr(szip);
unsigned long ulnet=inet_addr(sznet);
unsigned long ulmask=(unsigned long)1 << imaskcnt;
if((ulip & ulmask) == (ulnet & ulmask))
return 1;
else return 0;
}
参数sIP,IP地址,格式xx.xx.xx.xx
参数sNet,网络地址,格式xx.xx.xx.xx/xx
返回值 1--sIP属于sNet
0--sIP不属于SNet
其他--sIP地址或者sNet格式错误
private int CheckIPNet(string sIP, string sNet)
{
string[] asNetSplit = sNet.Split(new char[1] { '/' });
if (asNetSplit.Length!=2) return 101; //网络地址格式错误
string[] asNetAdd= asNetSplit[0].Split(new char[1] { '.' });
if (asNetAdd.Length!=4) return 102; //网络地址格式错误
UInt32 uiNetAdd= Convert.ToUInt32(asNetAdd[0])*0x1000000+
Convert.ToUInt32(asNetAdd[1]) * 0x10000 +
Convert.ToUInt32(asNetAdd[2]) * 0x100 +
Convert.ToUInt32(asNetAdd[3]);
string[] asIPAdd = sIP.Split(new char[1] { '.' });
if (asIPAdd.Length!=4) return 103; //IP地址格式错误
UInt32 uiIPAdd = Convert.ToUInt32(asIPAdd[0]) * 0x1000000 +
Convert.ToUInt32(asIPAdd[1]) * 0x10000 +
Convert.ToUInt32(asIPAdd[2]) * 0x100 +
Convert.ToUInt32(asIPAdd[3]);
UInt32 uiNetMask = (UInt32)0xffffffff<< Convert.ToInt16(asNetSplit[1]);
if ((uiIPAdd & uiNetMask) != (uiNetAdd& uiNetMask) )
return 0;
else
return 1;
}
给你一个linux c代码,不过没有环境测试,你可以自己验证一下
参数szip--ip地址,参数是sznet--网络地址,参数imaskcnt--网络掩码(取值范围1-32)
返回值 1--szip属于sznet
0--szip不属于sznet
int checkipnet(const char *szip,const char *sznet,int imaskcnt)
{
unsigned long ulip=inet_addr(szip);
unsigned long ulnet=inet_addr(sznet);
unsigned long ulmask=(unsigned long)1 << imaskcnt;
if((ulip & ulmask) == (ulnet & ulmask))
return 1;
else return 0;
}
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询