求 c# 判断一个IP地址是否为内网IP

解决方案 »

  1.   

    如果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  
    只要在这之间的IP是内网IP了
      

  2.   

    getHostInfo HostInfo = new getHostInfo();
    string IP = HostInfo.getIP();
    获取本机的IP然后和那个IP地址做比较
      

  3.   

    我找到一段java的函数,有谁能把它翻成c#吗?
    java 代码   1. public static boolean isInnerIP(String ipAddress){   
       2.         boolean isInnerIp = false;   
       3.         long ipNum = getIpNum(ipAddress);   
       4.         /**  
       5.         私有IP:A类  10.0.0.0-10.255.255.255  
       6.                B类  172.16.0.0-172.31.255.255  
       7.                C类  192.168.0.0-192.168.255.255  
       8.         当然,还有127这个网段是环回地址  
       9.         **/  
      10.         long aBegin = getIpNum("10.0.0.0");   
      11.         long aEnd = getIpNum("10.255.255.255");   
      12.         long bBegin = getIpNum("172.16.0.0");   
      13.         long bEnd = getIpNum("172.31.255.255");   
      14.         long cBegin = getIpNum("192.168.0.0");   
      15.         long cEnd = getIpNum("192.168.255.255");   
      16.         isInnerIp = isInner(ipNum,aBegin,aEnd) || isInner(ipNum,bBegin,bEnd) || isInner(ipNum,cBegin,cEnd) || ipAddress.equals("127.0.0.1");   
      17.         return isInnerIp;              
      18. }  java 代码   1. private static long getIpNum(String ipAddress) {   
       2.     String [] ip = ipAddress.split("\\.");   
       3.     long a = Integer.parseInt(ip[0]);   
       4.     long b = Integer.parseInt(ip[1]);   
       5.     long c = Integer.parseInt(ip[2]);   
       6.     long d = Integer.parseInt(ip[3]);   
       7.   
       8.     long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;   
       9.     return ipNum;   
      10. }  java 代码   1. private static boolean isInner(long userIp,long begin,long end){   
       2.      return (userIp>=begin) && (userIp<=end);   
       3. }