parse the IP address string as a byte array If the IP address is IPv4 address, the byte array length is 4 If the IP address is IPv6 address, the byte array length is 16 If the host is not an IP address string, will return null; - Java Network

Java examples for Network:IP Address

Description

parse the IP address string as a byte array If the IP address is IPv4 address, the byte array length is 4 If the IP address is IPv6 address, the byte array length is 16 If the host is not an IP address string, will return null;

Demo Code


//package com.java2s;
import sun.net.util.IPAddressUtil;

public class Main {
    public static void main(String[] argv) throws Exception {
        String ipAddress = "java2s.com";
        System.out.println(java.util.Arrays
                .toString(parseIpAddress(ipAddress)));
    }/*  w  w w  .j  a  v a2s. c o  m*/

    /**
     * This function parse the IP address string as a byte array
     * If the IP address is IPv4 address, the byte array length is 4
     * If the IP address is IPv6 address, the byte array length is 16
     * If the host is not an IP address string, will return null;
     * @param ipAddress
     * @return if this is valid IPv4 address or IPv6 address, return byte array for the address
     * otherwise return null.
     * So, this method can be used to check if the ipAddress string is valid or not
     */
    public static byte[] parseIpAddress(String ipAddress) {
        if (ipAddress == null)
            return null;
        boolean ipv6Expected = false;
        if (ipAddress.charAt(0) == '[') {
            // This is supposed to be an IPv6 literal
            if (ipAddress.length() > 2
                    && ipAddress.charAt(ipAddress.length() - 1) == ']') {
                ipAddress = ipAddress.substring(1, ipAddress.length() - 1);
                ipv6Expected = true;
            } else {
                // This was supposed to be a IPv6 address, but it's not!
                //throw new UnknownHostException(host + ": invalid IPv6 address");
                return null;
            }
        }

        // if host is an IP address, we won't do further lookup
        if (Character.digit(ipAddress.charAt(0), 16) != -1
                || (ipAddress.charAt(0) == ':')) {
            byte[] addressBytes = null;
            //            int numericZone = -1;
            //            String ifname = null;

            // see if it is IPv4 address
            addressBytes = IPAddressUtil.textToNumericFormatV4(ipAddress);
            if (addressBytes == null) {
                // see if it is IPv6 address
                // Check if a numeric or string zone id is present
                //                int pos;
                //                if ((pos=ipAddress.indexOf ("%")) != -1) {
                //                    numericZone = checkNumericZone (ipAddress);
                //                    if (numericZone == -1) { /* remainder of string must be an ifname */
                ////                        ifname = ipAddress.substring (pos+1);
                //                    }
                //                }
                addressBytes = IPAddressUtil
                        .textToNumericFormatV6(ipAddress);
            } else if (ipv6Expected) {
                // Means an IPv4 litteral between brackets!
                //throw new UnknownHostException("["+host+"]");
                return null;
            }
            return addressBytes;

        } else if (ipv6Expected) {
            // We were expecting an IPv6 Litteral, but got something else
            //throw new UnknownHostException("["+host+"]");
            return null;
        }

        return null;
    }
}

Related Tutorials