APIdia Launch Partner
Top Description Fields Constructors Methods
java.net

public abstract Class SocketImpl

extends Object
implements SocketOptions
Class Inheritance
All Implemented Interfaces
java.net.SocketOptions
Known Direct Subclasses
sun.nio.ch.DummySocketImpl, sun.nio.ch.NioSocketImpl, java.net.DelegatingSocketImpl
Imports
java.io.FileDescriptor, .IOException, .InputStream, .OutputStream, java.util.Objects, .Set, sun.net.PlatformSocketImpl, sun.nio.ch.NioSocketImpl

The abstract class SocketImpl is a common superclass of all classes that actually implement sockets. It is used to create both client and server sockets.
Since
1.0

Field Summary

Modifier and TypeField and Description
protected InetAddress
address

The IP address of the remote end of this socket.

protected FileDescriptor
fd

The file descriptor object for this socket.

protected int
localport

The local port number to which this socket is connected.

protected int
port

The port number on the remote host to which this socket is connected.

Constructor Summary

AccessConstructor and Description
public
SocketImpl()

Initialize a new instance of this class

Method Summary

Modifier and TypeMethod and Description
protected abstract void
accept(SocketImpl
the accepted connection.
s
)

Accepts a connection.

protected abstract int

Returns:

the number of bytes that can be read from this socket without blocking.
available
()

Returns the number of bytes that can be read from this socket without blocking.

protected abstract void
bind(InetAddress
an IP address that belongs to a local interface.
host
,
int
the port number.
port
)

Binds this socket to the specified local IP address and port number.

protected abstract void
close()

Closes this socket.

pack-priv void
closeQuietly()

Closes this socket, ignoring any IOException that is thrown by close.

protected abstract void
connect(String
the name of the remote host.
host
,
int
the port number.
port
)

Connects this socket to the specified port on the named host.

protected abstract void
connect(InetAddress
the IP address of the remote host.
address
,
int
the port number.
port
)

Connects this socket to the specified port number on the specified host.

protected abstract void
connect(SocketAddress
the Socket address of the remote host.
address
,
int
the timeout value, in milliseconds, or zero for no timeout.
timeout
)

Connects this socket to the specified port number on the specified host.

pack-priv void
copyOptionsTo(SocketImpl target)

Attempts to copy socket options from this SocketImpl to a target SocketImpl.

protected abstract void
create(boolean
must be true.
stream
)

Creates a stream socket.

pack-priv static <S extends SocketImpl & PlatformSocketImpl> S
createPlatformSocketImpl(boolean server)

Creates an instance of platform's SocketImpl

protected FileDescriptor

Returns:

the value of this socket's fd field.
getFileDescriptor
()

Returns the value of this socket's fd field.

protected InetAddress

Returns:

the value of this socket's address field.
getInetAddress
()

Returns the value of this socket's address field.

protected abstract InputStream

Returns:

a stream for reading from this socket.
getInputStream
()

Returns an input stream for this socket.

protected int

Returns:

the value of this socket's localport field.
getLocalPort
()

Returns the value of this socket's localport field.

protected <
The type of the socket option value
T
>
T

Returns:

the value of the named option
getOption
(SocketOption<T>
The socket option
name
)

Called to get a socket option.

protected abstract OutputStream

Returns:

an output stream for writing to this socket.
getOutputStream
()

Returns an output stream for this socket.

protected int

Returns:

the value of this socket's port field.
getPort
()

Returns the value of this socket's port field.

protected abstract void
listen(int
the maximum length of the queue.
backlog
)

Sets the maximum queue length for incoming connection indications (a request to connect) to the count argument.

pack-priv void
protected abstract void
sendUrgentData(int
The byte of data to send
data
)

Send one byte of urgent data on the socket.

protected <
The type of the socket option value
T
>
void
setOption(SocketOption<T>
The socket option
name
,
T
The value of the socket option. A value of null may be valid for some options.
value
)

Called to set a socket option.

protected void
setPerformancePreferences(int
An int expressing the relative importance of a short connection time
connectionTime
,
int
An int expressing the relative importance of low latency
latency
,
int
An int expressing the relative importance of high bandwidth
bandwidth
)
Deprecated for removal since 26. This method was intended to allow for protocols that are now obsolete.

Sets performance preferences for this socket.

protected void
shutdownInput()

Places the input stream for this socket at "end of stream".

protected void
shutdownOutput()

Disables the output stream for this socket.

protected Set<SocketOption<?>>

Returns:

a Set of SocketOptions
supportedOptions
()

Returns a set of SocketOptions supported by this impl and by this impl's socket (Socket or ServerSocket)

protected boolean

Returns:

true if urgent data supported
supportsUrgentData
()

Returns whether or not this SocketImpl supports sending urgent data.

public String

Returns:

a string representation of this socket.
toString
()

Overrides java.lang.Object.toString.

Returns the address and port of this socket as a String.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

addressback to summary
protected InetAddress address

The IP address of the remote end of this socket.

fdback to summary
protected FileDescriptor fd

The file descriptor object for this socket.

localportback to summary
protected int localport

The local port number to which this socket is connected.

portback to summary
protected int port

The port number on the remote host to which this socket is connected.

Constructor Detail

SocketImplback to summary
public SocketImpl()

Initialize a new instance of this class

Method Detail

acceptback to summary
protected abstract void accept(SocketImpl s) throws IOException

Accepts a connection.

Parameters
s:SocketImpl

the accepted connection.

Exceptions
IOException:
if an I/O error occurs when accepting the connection.
availableback to summary
protected abstract int available() throws IOException

Returns the number of bytes that can be read from this socket without blocking.

Returns:int

the number of bytes that can be read from this socket without blocking.

Exceptions
IOException:
if an I/O error occurs when determining the number of bytes available.
bindback to summary
protected abstract void bind(InetAddress host, int port) throws IOException

Binds this socket to the specified local IP address and port number.

Parameters
host:InetAddress

an IP address that belongs to a local interface.

port:int

the port number.

Exceptions
IOException:
if an I/O error occurs when binding this socket.
closeback to summary
protected abstract void close() throws IOException

Closes this socket.

Exceptions
IOException:
if an I/O error occurs when closing this socket.
closeQuietlyback to summary
pack-priv void closeQuietly()

Closes this socket, ignoring any IOException that is thrown by close.

connectback to summary
protected abstract void connect(String host, int port) throws IOException

Connects this socket to the specified port on the named host.

Parameters
host:String

the name of the remote host.

port:int

the port number.

Exceptions
IOException:
if an I/O error occurs when connecting to the remote host.
connectback to summary
protected abstract void connect(InetAddress address, int port) throws IOException

Connects this socket to the specified port number on the specified host.

Parameters
address:InetAddress

the IP address of the remote host.

port:int

the port number.

Exceptions
IOException:
if an I/O error occurs when attempting a connection.
connectback to summary
protected abstract void connect(SocketAddress address, int timeout) throws IOException

Connects this socket to the specified port number on the specified host. A timeout of zero is interpreted as an infinite timeout. The connection will then block until established or an error occurs.

Parameters
address:SocketAddress

the Socket address of the remote host.

timeout:int

the timeout value, in milliseconds, or zero for no timeout.

Exceptions
IOException:
if an I/O error occurs when attempting a connection.
Since
1.4
copyOptionsToback to summary
pack-priv void copyOptionsTo(SocketImpl target)

Attempts to copy socket options from this SocketImpl to a target SocketImpl. At this time, only the SO_TIMEOUT make sense to copy.

createback to summary
protected abstract void create(boolean stream) throws IOException

Creates a stream socket.

API Note

The stream parameter provided a way in early JDK releases to create a Socket that used a datagram socket. The Socket API no longer provides a way to do this, so the create method will always be called with a stream value of true.

Parameters
stream:boolean

must be true.

Exceptions
IOException:
if an I/O error occurs while creating the socket.
createPlatformSocketImplback to summary
pack-priv static <S extends SocketImpl & PlatformSocketImpl> S createPlatformSocketImpl(boolean server)

Creates an instance of platform's SocketImpl

Annotations
@SuppressWarnings:unchecked
getFileDescriptorback to summary
protected FileDescriptor getFileDescriptor()

Returns the value of this socket's fd field.

Returns:FileDescriptor

the value of this socket's fd field.

See Also
java.net.SocketImpl#fd
getInetAddressback to summary
protected InetAddress getInetAddress()

Returns the value of this socket's address field.

Returns:InetAddress

the value of this socket's address field.

See Also
java.net.SocketImpl#address
getInputStreamback to summary
protected abstract InputStream getInputStream() throws IOException

Returns an input stream for this socket.

Returns:InputStream

a stream for reading from this socket.

Exceptions
IOException:
if an I/O error occurs when creating the input stream.
getLocalPortback to summary
protected int getLocalPort()

Returns the value of this socket's localport field.

Returns:int

the value of this socket's localport field.

See Also
java.net.SocketImpl#localport
getOptionback to summary
protected <T> T getOption(SocketOption<T> name) throws IOException

Called to get a socket option.

Implementation Specification

The default implementation of this method first checks that the given socket option name is not null, then throws UnsupportedOperationException. Subclasses should override this method with an appropriate implementation.

Parameters
<T>
The type of the socket option value
name:SocketOption<T>

The socket option

Returns:T

the value of the named option

Exceptions
IOException:
if an I/O error occurs, or if the socket is closed
UnsupportedOperationException:
if the SocketImpl does not support the option
NullPointerException:
if name is null
Since
9
getOutputStreamback to summary
protected abstract OutputStream getOutputStream() throws IOException

Returns an output stream for this socket.

Returns:OutputStream

an output stream for writing to this socket.

Exceptions
IOException:
if an I/O error occurs when creating the output stream.
getPortback to summary
protected int getPort()

Returns the value of this socket's port field.

Returns:int

the value of this socket's port field.

See Also
java.net.SocketImpl#port
listenback to summary
protected abstract void listen(int backlog) throws IOException

Sets the maximum queue length for incoming connection indications (a request to connect) to the count argument. If a connection indication arrives when the queue is full, the connection is refused.

Parameters
backlog:int

the maximum length of the queue.

Exceptions
IOException:
if an I/O error occurs when creating the queue.
resetback to summary
pack-priv void reset()
sendUrgentDataback to summary
protected abstract void sendUrgentData(int data) throws IOException

Send one byte of urgent data on the socket. The byte to be sent is the low eight bits of the parameter

Parameters
data:int

The byte of data to send

Exceptions
IOException:
if there is an error sending the data.
Since
1.4
setOptionback to summary
protected <T> void setOption(SocketOption<T> name, T value) throws IOException

Called to set a socket option.

Implementation Specification

The default implementation of this method first checks that the given socket option name is not null, then throws UnsupportedOperationException. Subclasses should override this method with an appropriate implementation.

Parameters
<T>
The type of the socket option value
name:SocketOption<T>

The socket option

value:T

The value of the socket option. A value of null may be valid for some options.

Exceptions
IOException:
if an I/O error occurs, or if the socket is closed
UnsupportedOperationException:
if the SocketImpl does not support the option
IllegalArgumentException:
if the value is not valid for the option
NullPointerException:
if name is null
Since
9
setPerformancePreferencesback to summary
protected void setPerformancePreferences(int connectionTime, int latency, int bandwidth)

Deprecated

for removal since 26.

This method was intended to allow for protocols that are now obsolete.

Sets performance preferences for this socket.

Sockets use the TCP/IP protocol by default. Some implementations may offer alternative protocols which have different performance characteristics than TCP/IP. This method allows the application to express its own preferences as to how these tradeoffs should be made when the implementation chooses from the available protocols.

Performance preferences are described by three integers whose values indicate the relative importance of short connection time, low latency, and high bandwidth. The absolute values of the integers are irrelevant; in order to choose a protocol the values are simply compared, with larger values indicating stronger preferences. Negative values represent a lower priority than positive values. If the application prefers short connection time over both low latency and high bandwidth, for example, then it could invoke this method with the values (1, 0, 0). If the application prefers high bandwidth above low latency, and low latency above short connection time, then it could invoke this method with the values (0, 1, 2). By default, this method does nothing, unless it is overridden in a sub-class.

Parameters
connectionTime:int

An int expressing the relative importance of a short connection time

latency:int

An int expressing the relative importance of low latency

bandwidth:int

An int expressing the relative importance of high bandwidth

Annotations
@Deprecated
since:26
forRemoval:true
Since
1.5
shutdownInputback to summary
protected void shutdownInput() throws IOException

Places the input stream for this socket at "end of stream". Any data sent to this socket is acknowledged and then silently discarded. If you read from a socket input stream after invoking this method on the socket, the stream's available method will return 0, and its read methods will return -1 (end of stream).

Exceptions
IOException:
if an I/O error occurs when shutting down this socket.
Since
1.3
See Also
java.net.Socket#shutdownOutput(), java.net.Socket#close(), java.net.Socket#setSoLinger(boolean, int)
shutdownOutputback to summary
protected void shutdownOutput() throws IOException

Disables the output stream for this socket. For a TCP socket, any previously written data will be sent followed by TCP's normal connection termination sequence. If you write to a socket output stream after invoking shutdownOutput() on the socket, the stream will throw an IOException.

Exceptions
IOException:
if an I/O error occurs when shutting down this socket.
Since
1.3
See Also
java.net.Socket#shutdownInput(), java.net.Socket#close(), java.net.Socket#setSoLinger(boolean, int)
supportedOptionsback to summary
protected Set<SocketOption<?>> supportedOptions()

Returns a set of SocketOptions supported by this impl and by this impl's socket (Socket or ServerSocket)

Implementation Specification

The default implementation of this method returns an empty set. Subclasses should override this method with an appropriate implementation.

Returns:Set<SocketOption<?>>

a Set of SocketOptions

Since
9
supportsUrgentDataback to summary
protected boolean supportsUrgentData()

Returns whether or not this SocketImpl supports sending urgent data. By default, false is returned unless the method is overridden in a sub-class

Returns:boolean

true if urgent data supported

Since
1.4
See Also
java.net.SocketImpl#address
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Returns the address and port of this socket as a String.

Returns:String

a string representation of this socket.