Java Socket Address Get createInetSocketAddress(String address)

Here you can find the source of createInetSocketAddress(String address)

Description

Creates an InetSocketAddress given a host and optional port in a single String

This allows either IP4 or IP6 addresses (including port) to be provided as Strings as per rfc2732

License

Apache License

Parameter

Parameter Description
address the address in one of the following formats (the braces '[]'and colon ':' are literal here): host<br> [host]<br> [host]:port<br> [host]port<br> ip4host:port<br> <p>Assumes port 0 if non is specified.</p> <p/> <p> As per java.net.InetSocketAddress A port number of zero will let the system pick up an ephemeral port in a bind operation.</p>

Declaration

public static InetSocketAddress createInetSocketAddress(String address) 

Method Source Code

//package com.java2s;
/*//from   w w  w. j  a  v a  2 s  .c  om
 * Copyright 2014, The Sporting Exchange Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.net.InetSocketAddress;

public class Main {
    /**
     * <p>Creates an InetSocketAddress given a host and optional port in a single String</p>
     * <p/>
     * <p>This allows either IP4 or IP6 addresses (including port) to be provided as Strings as per rfc2732</p>
     *
     * @param address the address in one of the following formats (the braces '[]'and colon ':' are literal here):
     *                host<br>
     *                [host]<br>
     *                [host]:port<br>
     *                [host]port<br>
     *                ip4host:port<br>
     *                <p>Assumes port 0 if non is specified.</p>
     *                <p/>
     *                <p> As per java.net.InetSocketAddress
     *                A port number of zero will let the system pick up an ephemeral port in a bind operation.</p>
     */
    public static InetSocketAddress createInetSocketAddress(String address) {
        return createInetSocketAddress(address, 0);
    }

    /**
     * <p>Creates an InetSocketAddress given a host and optional port in a single String
     * <p/>
     * <p>This allows either IP4 or IP6 addresses (including port) to be provided as Strings as per rfc2732</p>
     *
     * @param address     the address in one of the following formats (the braces '[]'and colon ':' are literal here):
     *                    host<br>
     *                    [host]<br>
     *                    [host]:port<br>
     *                    [host]port<br>
     *                    ip4host:port<br>
     * @param defaultPort The default port to be used ONLY IF the string does not specify a port
     * @see java.net.InetSocketAddress
     */
    public static InetSocketAddress createInetSocketAddress(String address, int defaultPort) {
        String original = address.trim();
        String host = original;
        int port = defaultPort;

        if (host.startsWith("[")) {
            // it is an address in [host] or [host]port format
            String[] s = original.split("\\]");
            if (s.length > 1) {
                if (s[1].startsWith(":")) {
                    s[1] = s[1].substring(1);
                }
                port = computePort(s[1], 0);
            }
            host = s[0].substring(1);
        }

        if (host.indexOf(":") == host.lastIndexOf(":") && (host.indexOf(":") > -1)) {
            //There is exactly 1 ':' in the string, hence this is an IP4 address which includes a port
            String[] s = original.split("\\:");
            host = s[0];
            if (s.length > 1) {
                port = computePort(s[1], 0);
            }
        }
        return new InetSocketAddress(host, port);
    }

    private static int computePort(String s, int i) {
        try {
            return Integer.valueOf(s);
        } catch (NumberFormatException e) {
            return i;
        }
    }
}

Related

  1. convertToHostString(SocketAddress hostAddress)
  2. create(SocketAddress address, SocketAddress port)
  3. createBoundServerSocket(final SocketAddress socketAddress)
  4. createClientSocket(InetSocketAddress site)
  5. createHttpFields(InetSocketAddress endpoint)
  6. createInetSocketAddress(String ip, int port)
  7. describe(InetSocketAddress localAddress)
  8. encodedStringToInetSocketAddress(String str)
  9. extractClientAddress(SocketAddress remoteAddress)