Java HTTP Port Find getAvialablePort(final int basePort)

Here you can find the source of getAvialablePort(final int basePort)

Description

get Avialable Port

License

Apache License

Declaration

public static int getAvialablePort(final int basePort) 

Method Source Code


//package com.java2s;
/*/*  w  w w  .  j av a 2s .  com*/
 * @(#)$Id$$
 *
 * Copyright 2006-2008 Makoto YUI
 *
 * 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.
 * 
 * Contributors:
 *     Makoto YUI - initial implementation
 */

import java.io.IOException;
import java.net.*;

import java.util.NoSuchElementException;

public class Main {
    public static int getAvialablePort(final int basePort) {
        if (basePort == 0) {
            return getAvailablePort();
        }
        if (basePort < 0 || basePort > 65535) {
            throw new IllegalArgumentException("Illegal port number: " + basePort);
        }
        for (int i = basePort; i <= 65535; i++) {
            if (isPortAvailable(i)) {
                return i;
            }
        }
        throw new NoSuchElementException("Could not find available port greater than or equals to " + basePort);
    }

    public static int getAvailablePort() {
        try {
            ServerSocket s = new ServerSocket(0);
            s.setReuseAddress(true);
            s.close();
            return s.getLocalPort();
        } catch (IOException e) {
            throw new IllegalStateException("Failed to find an available port", e);
        }
    }

    public static boolean isPortAvailable(final int port) {
        ServerSocket s = null;
        try {
            s = new ServerSocket(port);
            s.setReuseAddress(true);
            return true;
        } catch (IOException e) {
            return false;
        } finally {
            if (s != null) {
                try {
                    s.close();
                } catch (IOException e) {
                    ;
                }
            }
        }
    }
}

Related

  1. getAvailablePort(int randomAttempts)
  2. getAvailablePort(int startPort)
  3. getAvailablePort(String hostname, String portRange)
  4. getAvailablePorts(int basePort, int portCount)
  5. getAvailablePortsFromRange(int portMin, int portMax, int numberOfPorts)
  6. getCorrectHostnamePort(String hostPort)
  7. getEffectivePort(String scheme, int specifiedPort)
  8. getEphemeralPort()
  9. getFreeLocalPort()