Socket und ServerSocket unterstützen Optionen wie zum Beispiel einen Type of Service oder TCP-NoDelay, wobei diese von System zu System unterschiedlich sein können. In Java 9 lassen sich die Optionen einfach abfragen.
Beispiel: Gib alle Optionen aus:
Socket socket = new Socket( "localhost", 80 ); System.out.println( socket.supportedOptions().stream() .map( o -> o.name() + " is " + o.type().getSimpleName() ) .collect( Collectors.joining( ", " ) ) ); // SO_LINGER is Integer, IP_TOS is Integer, SO_KEEPALIVE is Boolean, TCP_NODELAY is Boolean, SO_SNDBUF is Integer, SO_REUSEADDR is Boolean, SO_RCVBUF is Integer ServerSocket serversocket = new ServerSocket( 8080 ); System.out.println( serversocket.supportedOptions() ); // [SO_RCVBUF, SO_REUSEADDR, IP_TOS]
Die supportedOptions()-Methoden liefern eine Set<SocketOption>. Eine SocketOption deklariert name() und type().