Check if the specified address is within the required subnet : IP Address « Network Protocol « Java






Check if the specified address is within the required subnet

      
/*
 * Copyright (C) 2006-2008 Alfresco Software Limited.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

 * As a special exception to the terms and conditions of version 2.0 of 
 * the GPL, you may redistribute this Program in connection with Free/Libre 
 * and Open Source Software ("FLOSS") applications as described in Alfresco's 
 * FLOSS exception.  You should have recieved a copy of the text describing 
 * the FLOSS exception, and it is also available here: 
 * http://www.alfresco.com/legal/licensing"
 */

//package net.gqu.utils;

import java.util.StringTokenizer;

/**
 * TCP/IP Address Utility Class
 *
 * @author gkspencer
 */
public class IPAddress {


  /**
   * Check if the specified address is within the required subnet
   * 
   * @param ipaddr String
   * @param subnet String
   * @param mask String
   * @return boolean
   */
  public final static boolean isInSubnet(String ipaddr, String subnet, String mask) {
    
    //  Convert the addresses to integer values
    
    int ipaddrInt = parseNumericAddress(ipaddr);
    if ( ipaddrInt == 0)
      return false;
      
    int subnetInt = parseNumericAddress(subnet);
    if ( subnetInt == 0)
      return false;
      
    int maskInt = parseNumericAddress(mask);
    if ( maskInt == 0)
      return false;
      
    //  Check if the address is part of the subnet
    
    if (( ipaddrInt & maskInt) == subnetInt)
      return true;
    return false;  
  }
  /**
   * Check if the specified address is a valid numeric TCP/IP address and return as an integer value
   * 
   * @param ipaddr String
   * @return int
   */
  public final static int parseNumericAddress(String ipaddr) {
  
    //  Check if the string is valid
    
    if ( ipaddr == null || ipaddr.length() < 7 || ipaddr.length() > 15)
      return 0;
      
    //  Check the address string, should be n.n.n.n format
    
    StringTokenizer token = new StringTokenizer(ipaddr,".");
    if ( token.countTokens() != 4)
      return 0;

    int ipInt = 0;
    
    while ( token.hasMoreTokens()) {
      
      //  Get the current token and convert to an integer value
      
      String ipNum = token.nextToken();
      
      try {
        
        //  Validate the current address part
        
        int ipVal = Integer.valueOf(ipNum).intValue();
        if ( ipVal < 0 || ipVal > 255)
          return 0;
          
        //  Add to the integer address
        
        ipInt = (ipInt << 8) + ipVal;
      }
      catch (NumberFormatException ex) {
        return 0;
      }
    }
    
    //  Return the integer address
    
    return ipInt;
  }


}

   
    
    
    
    
    
  








Related examples in the same category

1.Get IP
2.Get all IP addresses
3.Convert a hostname to the equivalent IP addressConvert a hostname to the equivalent IP address
4.Getting the Hostname of an IP Address
5.Get canonical host name
6.Getting the IP Address and Hostname of the Local Machine
7.Perform Network Lookup with the InetAddress class
8.Get hostname by a byte array containing the IP address
9.Display multiple IP addresses
10.Looking Up the Address of a HostLooking Up the Address of a Host
11.Retrieve the hostname of an IP Address
12.Retrieve the IP address of a hostname
13.Report By Address
14.Determine the IP address and hostname of the local machine
15.An nslookup clone in Java
16.Looking for Ports: 0 -- 1024
17.Looking for Port: 1024 -- 65536
18.Looking for Port: start from 65535
19.A class that performs some subnet calculations given a network address and a subnet mask.
20.Resolves string ip address and returns host name as a string
21.Resolves hostname and returns ip address as a string
22.Resolves ip address and returns host name as a string
23.This program demonstrates the InetAddress class
24.Check if IP address match pattern
25.Converts IPv4 address in its textual presentation form into its numeric binary form.
26.Convert IPv6 presentation level address to network order binary form.
27.Finds this computer's global IP address
28.Finds a local, non-loopback, IPv4 address
29.Check if the specified address is a valid numeric TCP/IP address
30.Check if the specified address is a valid numeric TCP/IP address and return as an integer value
31.Convert a raw IP address array as a String
32.Determine if the given string is a valid IPv4 or IPv6 address.Determine if the given string is a valid IPv4 or IPv6 address.
33.A string input validator for IPs and domains.
34.Get Current Environment Network IP