Package com.sun.enterprise.util.net
Class NetUtils
- java.lang.Object
-
- com.sun.enterprise.util.net.NetUtils
-
public class NetUtils extends Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
NetUtils.PortAvailability
-
Field Summary
Fields Modifier and Type Field Description static int
MAX_PORT
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static NetUtils.PortAvailability
checkPort(int portNumber)
There are 4 possibilities when you want to setup a server socket on a port: 1.static String
getCanonicalHostName()
This method returns the fully qualified name of the host.static Socket
getClientSocket(String host, int port, int msecTimeout)
static int
getFreePort()
Gets a free port at the time of call to this method.static int
getFreePort(String hostName, int startingPort, int endingPort)
Returns a random port in the specified rangestatic InetAddress[]
getHostAddresses()
static String[]
getHostIPs()
static String
getHostName()
static int
getNextFreePort(String hostName, int port)
Get the next free port (incrementing by 1)static byte[]
ip2bytes(String ip)
static boolean
isEqual(String host1, String host2)
Painfully thorough error-handling.static boolean
isLocal(String ip)
static boolean
isLocalHost(String ip)
static boolean
isPortFree(int portNumber)
static boolean
isPortFree(String hostName, int portNumber)
static boolean
isPortStringValid(String portNumber)
static boolean
isPortValid(int portNumber)
static boolean
isRemote(String ip)
static boolean
isRunning(int port)
convenience method for the local machinestatic boolean
isRunning(String host, int port)
static boolean
isRunning(String host, int port, int timeoutMilliseconds)
There is sometimes a need for subclasses to know if alocal domain
is running.static boolean
isSecurePort(String hostname, int port)
This method accepts a hostname and port #.static boolean
isThisHostLocal(String hostname)
Return true if hostname represents the current machine.static void
main(String[] args)
static String
trimIP(String ip)
-
-
-
Field Detail
-
MAX_PORT
public static final int MAX_PORT
- See Also:
- Constant Field Values
-
-
Method Detail
-
isThisHostLocal
public static boolean isThisHostLocal(String hostname)
Return true if hostname represents the current machine. A null or empty hostname is considered local, as is the name "localhost". Otherwise, all the IP addresses corresponding to hostname are compared with all the IP addresses corresponding to "localhost", as well as all the IP addresses for all the network interfaces on this machine. Note that hostname can also be an IP address in string form.- Returns:
- true if hostname is the local host
-
isEqual
public static boolean isEqual(String host1, String host2)
Painfully thorough error-handling. Some would say over-engineered but I plan on never looking at this code again!- Parameters:
host1
-host2
-- Returns:
-
getHostName
public static String getHostName()
-
getCanonicalHostName
public static String getCanonicalHostName() throws UnknownHostException
This method returns the fully qualified name of the host. If the name can't be resolved (on windows if there isn't a domain specified), just host name is returned- Throws:
UnknownHostException
- so it can be handled on a case by case basis
-
getHostAddresses
public static InetAddress[] getHostAddresses()
-
getHostIPs
public static String[] getHostIPs()
-
ip2bytes
public static byte[] ip2bytes(String ip)
-
isLocalHost
public static boolean isLocalHost(String ip)
-
isLocal
public static boolean isLocal(String ip)
-
isRemote
public static boolean isRemote(String ip)
-
getNextFreePort
public static int getNextFreePort(String hostName, int port)
Get the next free port (incrementing by 1)- Parameters:
hostName
- The host name on which the port is to be obtainedport
- The port number- Returns:
- The next incremental port number or 0 if a port cannot be found.
-
getFreePort
public static int getFreePort(String hostName, int startingPort, int endingPort)
Returns a random port in the specified range- Parameters:
hostName
- The host on which the port is to be obtained.startingPort
- starting port in the rangeendingPort
- ending port in the range- Returns:
- the new port or 0 if the range is invalid.
-
isPortValid
public static boolean isPortValid(int portNumber)
-
isPortStringValid
public static boolean isPortStringValid(String portNumber)
-
isPortFree
public static boolean isPortFree(String hostName, int portNumber)
-
checkPort
public static NetUtils.PortAvailability checkPort(int portNumber)
There are 4 possibilities when you want to setup a server socket on a port: 1. The port is already in use 2. The user does not have permission to open up shop on that port An example of (2) is a non-root user on UNIX trying to use port 80 3. The port number is not in the legal range 4. OK -- you can use it!- Parameters:
portNumber
-- Returns:
- one of the 4 possibilities for this port
-
isPortFree
public static boolean isPortFree(int portNumber)
-
getFreePort
public static int getFreePort()
Gets a free port at the time of call to this method. The logic leverages the built in java.net.ServerSocket implementation which binds a server socket to a free port when instantiated with a port0
.Note that this method guarantees the availability of the port only at the time of call. The method does not bind to this port.
Checking for free port can fail for several reasons which may indicate potential problems with the system. This method acknowledges the fact and following is the general contract:
- Best effort is made to find a port which can be bound to. All the exceptional conditions in the due course are considered SEVERE.
- If any exceptional condition is experienced,
0
is returned, indicating that the method failed for some reasons and the callers should take the corrective action. (The method need not always throw an exception for this).- Method is synchronized on this class.
- Returns:
- integer depicting the free port number available at this time 0 otherwise.
-
isSecurePort
public static boolean isSecurePort(String hostname, int port) throws IOException, ConnectException, SocketTimeoutException
This method accepts a hostname and port #. It uses this information to attempt to connect to the port, send a test query, analyze the result to determine if the port is secure or unsecure (currently only http / https is supported).- Parameters:
hostname
- - String name of the host where the connections has to be madeport
- - int name of the port where the connections has to be made- Returns:
- admin password
- Throws:
IOException
- if an error occurs during the connectionConnectException
- if an error occurred while attempting to connect a socket to a remote address and port.SocketTimeoutException
- if timeout(4s) expires before connecting
-
isRunning
public static boolean isRunning(String host, int port, int timeoutMilliseconds)
There is sometimes a need for subclasses to know if alocal domain
is running. An example of such a command is change-master-password command. The stop-domain command also needs to know if a domain is running without having to provide user name and password on command line (this is the case when I own a domain that has non-default admin user and password) and want to stop it without providing it.In such cases, we need to know if the domain is running and this method provides a way to do that.
- Parameters:
timeoutMilliseconds
- the timeout in milliseconds- Returns:
- boolean indicating whether the server is running
-
isRunning
public static boolean isRunning(String host, int port)
-
isRunning
public static boolean isRunning(int port)
convenience method for the local machine
-
main
public static void main(String[] args)
-
-