根据IP的地址段来判断网络是局域网还是广域网
2013-01-04 10:41
232 查看
这个只是简单的根据IP的地址段来判断网络是局域网还是广域网。但在某些复杂的网络情况下可能并不适用
我们认为ABC类外的IP地址就是广域网IP,ABC类IP的址段分别如下:
A类:10.0.0.0~10.255.255.255
B类:172.16.0.0~172.31.255.255
C类:192.168.0.0~192.168.255.255
示例代码如下:
/// <summary>
/// IP辅助类
/// </summary>
public static class IPHelper
{
/// <summary>
/// 判断指定IP是否为广域网IP
/// </summary>
/// <param name="ipAddress">要测试的IP地址</param>
/// <returns>地址分类</returns>
/// <remarks>0:无效IP,1:局域网IP,2:广域网IP</remarks>
public static int GetIPType(string ipAddress)
{
//ABC类外的IP地址为广域网IP
//A类:10.0.0.0~10.255.255.255
//B类:172.16.0.0~172.31.255.255
//C类:192.168.0.0~192.168.255.255
//返回值
//0:无效IP
//1:局域网IP
//2:广域网IP
if (ipAddress == "127.0.0.1")
{
return 1;
}
string[] ipAddressList = ipAddress.Split('.');
int ipAddressTemp;
//检查IP地址是否有效
if (ipAddressList.Length != 4)
{
return 0;
}
if (!(int.TryParse(ipAddressList[0], out ipAddressTemp) && int.TryParse(ipAddressList[1], out ipAddressTemp)
&& int.TryParse(ipAddressList[2], out ipAddressTemp) && int.TryParse(ipAddressList[3], out ipAddressTemp)))
{
return 0;
}
if (!(int.Parse(ipAddressList[0]) >= 0 && int.Parse(ipAddressList[0]) <= 255
&& int.Parse(ipAddressList[1]) >= 0 && int.Parse(ipAddressList[1]) <= 255
&& int.Parse(ipAddressList[2]) >= 0 && int.Parse(ipAddressList[2]) <= 255
&& int.Parse(ipAddressList[3]) >= 0 && int.Parse(ipAddressList[3]) <= 255))
{
return 0;
}
//局域网IP
if (int.Parse(ipAddressList[0]) == 10
|| (int.Parse(ipAddressList[0]) == 172 && int.Parse(ipAddressList[1]) >= 16 && int.Parse(ipAddressList[1]) <= 31)
|| (int.Parse(ipAddressList[0]) == 192 && int.Parse(ipAddressList[1]) == 168))
{
return 1;
}
return 2;
}
}
我们认为ABC类外的IP地址就是广域网IP,ABC类IP的址段分别如下:
A类:10.0.0.0~10.255.255.255
B类:172.16.0.0~172.31.255.255
C类:192.168.0.0~192.168.255.255
示例代码如下:
/// <summary>
/// IP辅助类
/// </summary>
public static class IPHelper
{
/// <summary>
/// 判断指定IP是否为广域网IP
/// </summary>
/// <param name="ipAddress">要测试的IP地址</param>
/// <returns>地址分类</returns>
/// <remarks>0:无效IP,1:局域网IP,2:广域网IP</remarks>
public static int GetIPType(string ipAddress)
{
//ABC类外的IP地址为广域网IP
//A类:10.0.0.0~10.255.255.255
//B类:172.16.0.0~172.31.255.255
//C类:192.168.0.0~192.168.255.255
//返回值
//0:无效IP
//1:局域网IP
//2:广域网IP
if (ipAddress == "127.0.0.1")
{
return 1;
}
string[] ipAddressList = ipAddress.Split('.');
int ipAddressTemp;
//检查IP地址是否有效
if (ipAddressList.Length != 4)
{
return 0;
}
if (!(int.TryParse(ipAddressList[0], out ipAddressTemp) && int.TryParse(ipAddressList[1], out ipAddressTemp)
&& int.TryParse(ipAddressList[2], out ipAddressTemp) && int.TryParse(ipAddressList[3], out ipAddressTemp)))
{
return 0;
}
if (!(int.Parse(ipAddressList[0]) >= 0 && int.Parse(ipAddressList[0]) <= 255
&& int.Parse(ipAddressList[1]) >= 0 && int.Parse(ipAddressList[1]) <= 255
&& int.Parse(ipAddressList[2]) >= 0 && int.Parse(ipAddressList[2]) <= 255
&& int.Parse(ipAddressList[3]) >= 0 && int.Parse(ipAddressList[3]) <= 255))
{
return 0;
}
//局域网IP
if (int.Parse(ipAddressList[0]) == 10
|| (int.Parse(ipAddressList[0]) == 172 && int.Parse(ipAddressList[1]) >= 16 && int.Parse(ipAddressList[1]) <= 31)
|| (int.Parse(ipAddressList[0]) == 192 && int.Parse(ipAddressList[1]) == 168))
{
return 1;
}
return 2;
}
}
相关文章推荐
- 基础网络概念(一)OSI模型、TCP/IP、广域网、局域网、以太网
- windows网络连接表 根据连接远程的ip端口判断本地程序
- 基础网络概念(一)OSI模型、TCP/IP、广域网、局域网、以太网
- Atitit 网络设备的自动发现机制 需求如下: 1、自动获取当前设备所在网段及当前与当前网段有连接的网段的所有IP,并判断出是哪类设备。如:服务器、交换机、防火墙等。 2、如何根据第1点得到的
- 【Linux 网络】虚拟机动态IP NAT连接外部网络(局域网以及广域网)
- 【Linux 网络】虚拟机静态IP NAT连接外部网络(局域网以及广域网)
- .net 根据ip获得局域网主机名和物理地址
- 数据库根据键值自动判断插入还是更新的SQL
- 判断是2G网络还是3G网络
- C++ 判断IP是否属于局域网IP
- Linux下根据局域网IP查看主机名命令
- Android之判断手机连接的网络类型是WIFI还是2G/3G/4G(转载)
- 根据IP判断归属地区
- Shell编程面试题5_实现判断10.0.0.0/24网络里,当前在线用户的IP
- 能否准确判断网络是3g还是Edge,不论国内还是国外
- PHP判断IP是否在某个网络内
- .NET读取QQWry.Dat 纯真版ip数据库(根据ip判断国家)
- 如何判断自己IP是内网IP还是外网IP
- 传入http请求的UserAgent 根据它判断是手机还是电脑发送过来的请求
- 根据userAgent判断移动端是iOS 还是android?