public Socket createSocket (Socket s, InputStream consumed, boolean autoClose) throws IOException

Creates a server mode Socket layered over an existing connected socket, and is able to read data which has already been consumed/removed from the Socket's underlying InputStream.

This method can be used by a server application that needs to observe the inbound data but still create valid SSL/TLS connections: for example, inspection of Server Name Indication (SNI) extensions (See section 3 of TLS Extensions (RFC6066)). Data that has been already removed from the underlying InputStream should be loaded into the consumed stream before this method is called, perhaps using a java.io.ByteArrayInputStream. When this Socket begins handshaking, it will read all of the data in consumed until it reaches EOF, then all further data is read from the underlying InputStream as usual.

The returned socket is configured using the socket options established for this factory, and is set to use server mode when handshaking (see SSLSocket.setUseClientMode(boolean)).

Parameters:
s     the existing socket
consumed     the consumed inbound network data that has already been removed from the existing Socket InputStream. This parameter may be null if no data has been removed.
autoClose    close the underlying socket when this socket is closed.

Returns:  the Socket compliant with the socket options established for this factory

Exceptions:
IOException    if an I/O error occurs when creating the socket
UnsupportedOperationException    if the underlying provider does not implement the operation
NullPointerException    if s is null

Since:  1.8