欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » C# » 正文

热门阅读

根据IP判断局域网还是广域网的简单方法

创建时间:2012年08月31日 15:34  阅读次数:(10253)
分享到:
这个示例只是简单的根据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;
}
}
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论2条
  • #1楼  评论人:rufeng315  评论时间:2013-1-7 17:45:46
  • 此方法存在有BUG
    未对B类IP地址172.16.0.0~172.31.255.255
    第二节点进行判断;如:172.32.255.255此IP应为非法.C类IP同样
    C类:192.168.0.0~192.168.255.255
  • #2楼  评论人:Wyf  评论时间:2013-1-7 18:45:50
  • 谢谢指错。
发表评论:
留言人:
内  容:
请输入问题 86+17=? 的结果(结果是:103)
结  果: