ServerSocket ServerSocket(int, int, InetAddress) in Java

ServerSocket(int, int, InetAddress): This method is available in the java.net.ServerSocket class of Java.

Syntax:

java.net.ServerSocket.ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException

This method takes three arguments. This method creates a server with the specified port, listens to the backlog, and local IP address to bind to. The bindAddr argument can be used on a multi-homed host for ServerSocket that will only accept connect requests to one of its addresses.

If bindAddr is null, it will default to accepting connections on any/all local addresses. The port must be between 0 and 65535, inclusive.

A port number of 0 means that the port number is automatically allocated, typically from an ephemeral port range. This port number can then be retrieved by calling getLocalPort.

If there is a security manager, this method calls its checkListen method with the port argument as its argument to ensure the operation is allowed. This could result in a SecurityException.

The backlog argument is the requested maximum number of pending connections on the socket. Its exact semantics are implementation specific.

In particular, an implementation may impose a maximum length or may choose to ignore the parameter altogether. The value provided should be greater than 0. If it is less than or equal to 0, then an implementation-specific default will be used.

Parameters: Three parameters are required for this method.

port: the port number, or 0 to use a port number that is automatically allocated.

backlog: requested maximum length of the queue of incoming connections.

bindAddr: the local InetAddress the server will bind to.

Throws:

1. SecurityException - if a security manager exists and its checkListen method doesn't allow the operation.

2. IOException - if an I/O error occurs when opening the socket.

3. IllegalArgumentException - if the port parameter is outside the specified range of valid port values, which is between 0 and 65535, inclusive.

Approach 1: When no exception

Java

package com.ServerSocket;

import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;

public class ServerSocket4 {
    public static void main(String[] args) throws IOException {

        int port = 8080, backlog = 5;
        InetAddress bindAddr = InetAddress.getLocalHost();
        ServerSocket serverSocket = new ServerSocket(port, backlog, bindAddr);

        System.out.println(serverSocket);
        serverSocket.close();
    }
}

Output:

ServerSocket[addr=DESKTOP-OK73JVQ/192.168.56.1,localport=8080]


Approach 2: IllegalArgumentException 

Java

package com.ServerSocket;

import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;

public class ServerSocket4 {
    public static void main(String[] args) throws IOException {

        int port = 80080, backlog = 5;
        InetAddress bindAddr = InetAddress.getLocalHost();
        ServerSocket serverSocket = new ServerSocket(port, backlog, bindAddr);

        System.out.println(serverSocket);
        serverSocket.close();
    }
}

Output:

Exception in thread "main" java.lang.IllegalArgumentException: Port value out of range: 80080 at java.base/java.net.ServerSocket.<init>(ServerSocket.java:277) at com.ServerSocket.ServerSocket4.main(ServerSocket4.java:12)


Some other methods of ServerSocket class

ServerSocket(): This method creates an unbound server socket.

ServerSocket(int): This method creates a server socket, bound to the specified port. A port number of 0 means that the port number is automatically allocated, typically from an ephemeral port range. This port number can then be retrieved by calling getLocalPort.

ServerSocket(int, int): This method creates a server socket and binds it to the specified local port number, with the specified backlog. A port number of 0 means that the port number is automatically allocated, typically from an ephemeral port range. This port number can then be retrieved by calling getLocalPort.

ServerSocket(int, int, InetAddress): This method creates a server with the specified port, listens to the backlog, and local IP address to bind to. The bindAddr argument can be used on a multi-homed host for ServerSocket that will only accept connect requests to one of its addresses.

accept(): This method listens for a connection to be made to this socket and accepts it. The method blocks until a connection is made.

bind(SocketAddress): This method binds the ServerSocket to a specific address(IP address and port number).

bind(SocketAddress, int): This method binds the ServerSocket to a specific address.

close(): This method closes this socket. Any thread currently blocked in accept() will throw a SocketException.

getChannel(): This method returns the unique java.nio.channels.ServerSocketChannel object associated with this socket, if any.

getInetAddress(): This method returns the local address of this server socket.

getLocalPort(): This method returns the port number on which this socket is listening.

getLocalSocketAddress(): This method returns the address of the endpoint this socket is bound to.

getOption(SocketOption): This method returns the value of a socket option.

getReceiveBufferSize(): This method gets the value of the SO_RCVBUF option for this ServerSocket, which is the proposed buffer size that will be used for Sockets accepted from this ServerSocket.

getReuseAddress(): This method tests if SO_REUSEADDR is enabled.

getSoTimeout(): This method retrieves the setting for SO_TIMEOUT.0 returns implying that the option is disabled (i.e., timeout of infinity). 

isBound(): This method returns the binding state of the ServerSocket.

isClosed(): This method returns the closed state of the ServerSocket.

setOption(SocketOption, Object): This method sets the value of a socket option.

setPerformancePreferences(int, int, int): This method sets performance preferences for this ServerSocket.

setReceiveBufferSize(int): This method sets a default proposed value for the SO_RCVBUF option for sockets accepted from this ServerSocket.

setReuseAddress(boolean): This method enables/disables the SO_REUSEADDRsocket option. When a TCP connection is closed the connection may remain in a timeout state for a period of time after the connection is closed.

setSocketFactory(SocketImplFactory): This method sets the server socket implementation factory for the application.

setSoTimeout(int): This method enables/disables SO_TIMEOUT with the specified timeout, in milliseconds.

supportedOptions(): This method returns a set of the socket options supported by this server socket. This method will continue to return the set of options even after the socket has been closed.

toString(): This method returns the implementation address and implementation port of this socket as a String.

No comments:

Post a Comment