Class LocalPortChecker

java.lang.Object
org.kiwiproject.net.LocalPortChecker

public class LocalPortChecker extends Object
Utility to check port availability and find open ports.
  • Field Details

  • Constructor Details

    • LocalPortChecker

      public LocalPortChecker()
  • Method Details

    • isPortAvailable

      public boolean isPortAvailable(int port)
      Check port availability. Note specifically that zero is not a valid port for the reasons described here and here.
      Parameters:
      port - the port to check on the local machine
      Returns:
      true if the port is available; false otherwise
      Throws:
      IllegalArgumentException - if port is not valid
    • findFirstOpenPortFrom

      public OptionalInt findFirstOpenPortFrom(int port)
      Find the first open port starting at the given port inclusive, i.e. if port is 1024 then it is the first port checked. If no available port is found, return an empty OptionalInt.
      Parameters:
      port - the port to start from
      Returns:
      an optional containing the first open port, or an empty optional
      Throws:
      IllegalArgumentException - if port is not between 1 and MAX_PORT
      Implementation Note:
      Since this method looks for availability of a specific port, zero is invalid because it is a reserved port used to indicate a random port and is never bound directly to.
    • findFirstOpenPortAbove

      public OptionalInt findFirstOpenPortAbove(int port)
      Find the first open port above the given port (i.e. if port is 1024 then the first port to be checked will be 1025). If no available port is found, return an empty OptionalInt.
      Parameters:
      port - the port to check above
      Returns:
      an optional containing the first open port, or an empty optional
      Throws:
      IllegalArgumentException - if port is not between 0 and (MAX_PORT - 1)
    • findRandomOpenPort

      public OptionalInt findRandomOpenPort()
      Find a random open port. If no available port is found, return an empty OptionalInt.
      Returns:
      an optional containing the first random port found, or an empty optional
    • findRandomOpenPortFrom

      public OptionalInt findRandomOpenPortFrom(int port)
      Find a random open port starting at the given port. If no available port is found, return an empty OptionalInt.
      Parameters:
      port - the port to start from (inclusive)
      Returns:
      an optional containing the first open port, or an empty optional
      Throws:
      IllegalArgumentException - if port is not between 1 and MAX_PORT
      Implementation Note:
      Since this method looks for availability of a specific port, zero is invalid because it is a reserved port used to indicate a random port and is never bound directly to.
    • findRandomOpenPortAbove

      public OptionalInt findRandomOpenPortAbove(int port)
      Find a random open port starting above the given port. If no available port is found, return an empty OptionalInt.
      Parameters:
      port - the port to start from (exclusive)
      Returns:
      an optional containing the first open port, or an empty optional
      Throws:
      IllegalArgumentException - if port is not between 0 and (MAX_PORT - 1)
      Implementation Note:
      Makes up to 100 attempts to find an open port before giving up.