Android APIs
public class

Socket

extends Object
implements Closeable
java.lang.Object
   ↳ java.net.Socket
Known Direct Subclasses

Class Overview

Provides a client-side TCP socket.

Summary

Public Constructors
Socket()
Creates a new unconnected socket.
Socket(Proxy proxy)
Creates a new unconnected socket using the given proxy type.
Socket(String dstName, int dstPort)
Creates a new streaming socket connected to the target host specified by the parameters dstName and dstPort.
Socket(String dstName, int dstPort, InetAddress localAddress, int localPort)
Creates a new streaming socket connected to the target host specified by the parameters dstName and dstPort.
Socket(String hostName, int port, boolean streaming)
This constructor was deprecated in API level 1. Use Socket(String, int) instead of this for streaming sockets or an appropriate constructor of DatagramSocket for UDP transport.
Socket(InetAddress dstAddress, int dstPort)
Creates a new streaming socket connected to the target host specified by the parameters dstAddress and dstPort.
Socket(InetAddress dstAddress, int dstPort, InetAddress localAddress, int localPort)
Creates a new streaming socket connected to the target host specified by the parameters dstAddress and dstPort.
Socket(InetAddress addr, int port, boolean streaming)
This constructor was deprecated in API level 1. Use Socket(InetAddress, int) instead of this for streaming sockets or an appropriate constructor of DatagramSocket for UDP transport.
Protected Constructors
Socket(SocketImpl impl)
Creates an unconnected socket with the given socket implementation.
Public Methods
void bind(SocketAddress localAddr)
Binds this socket to the given local host address and port specified by the SocketAddress localAddr.
synchronized void close()
Closes the socket.
void connect(SocketAddress remoteAddr, int timeout)
Connects this socket to the given remote host address and port specified by the SocketAddress remoteAddr with the specified timeout.
void connect(SocketAddress remoteAddr)
Connects this socket to the given remote host address and port specified by the SocketAddress remoteAddr.
SocketChannel getChannel()
Returns this socket's SocketChannel, if one exists.
InetAddress getInetAddress()
Returns the IP address of the target host this socket is connected to, or null if this socket is not yet connected.
InputStream getInputStream()
Returns an input stream to read data from this socket.
boolean getKeepAlive()
Returns this socket's SO_KEEPALIVE setting.
InetAddress getLocalAddress()
Returns the local IP address this socket is bound to, or an address for which isAnyLocalAddress() returns true if the socket is closed or unbound.
int getLocalPort()
Returns the local port this socket is bound to, or -1 if the socket is unbound.
SocketAddress getLocalSocketAddress()
Returns the local address and port of this socket as a SocketAddress or null if the socket has never been bound.
boolean getOOBInline()
Returns this socket's SO_OOBINLINE setting.
OutputStream getOutputStream()
Returns an output stream to write data into this socket.
int getPort()
Returns the port number of the target host this socket is connected to, or 0 if this socket is not yet connected.
synchronized int getReceiveBufferSize()
Returns this socket's receive buffer size.
SocketAddress getRemoteSocketAddress()
Returns the remote address and port of this socket as a SocketAddress or null if the socket is not connected.
boolean getReuseAddress()
Returns this socket's SO_REUSEADDR setting.
synchronized int getSendBufferSize()
Returns this socket's send buffer size.
int getSoLinger()
Returns this socket's linger timeout in seconds, or -1 for no linger (i.e.
synchronized int getSoTimeout()
Returns this socket's receive timeout.
boolean getTcpNoDelay()
Returns this socket's SocketOptions#TCP_NODELAY setting.
int getTrafficClass()
Returns this socket's setting.
boolean isBound()
Returns whether this socket is bound to a local address and port.
boolean isClosed()
Returns whether this socket is closed.
boolean isConnected()
Returns whether this socket is connected to a remote host.
boolean isInputShutdown()
Returns whether the incoming channel of the socket has already been closed.
boolean isOutputShutdown()
Returns whether the outgoing channel of the socket has already been closed.
void sendUrgentData(int value)
Sends the given single byte data which is represented by the lowest octet of value as "TCP urgent data".
void setKeepAlive(boolean keepAlive)
Sets this socket's SO_KEEPALIVE option.
void setOOBInline(boolean oobinline)
Sets this socket's SO_OOBINLINE option.
void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
Sets performance preferences for connectionTime, latency and bandwidth.
synchronized void setReceiveBufferSize(int size)
Sets this socket's receive buffer size.
void setReuseAddress(boolean reuse)
Sets this socket's SO_REUSEADDR option.
synchronized void setSendBufferSize(int size)
Sets this socket's send buffer size.
void setSoLinger(boolean on, int timeout)
Sets this socket's linger timeout in seconds.
synchronized void setSoTimeout(int timeout)
Sets this socket's read timeout in milliseconds.
synchronized static void setSocketImplFactory(SocketImplFactory fac)
Sets the internal factory for creating socket implementations.
void setTcpNoDelay(boolean on)
Sets this socket's TCP_NODELAY option.
void setTrafficClass(int value)
Sets this socket's IP_TOS value for every packet sent by this socket.
void shutdownInput()
Closes the input stream of this socket.
void shutdownOutput()
Closes the output stream of this socket.
String toString()
Returns a String containing a concise, human-readable description of the socket.
[Expand]
Inherited Methods
From class java.lang.Object
From interface java.io.Closeable
From interface java.lang.AutoCloseable

Public Constructors

public Socket ()

Added in API level 1

Creates a new unconnected socket. When a SocketImplFactory is defined it creates the internal socket implementation, otherwise the default socket implementation will be used for this socket.

public Socket (Proxy proxy)

Added in API level 1

Creates a new unconnected socket using the given proxy type. When a SocketImplFactory is defined it creates the internal socket implementation, otherwise the default socket implementation will be used for this socket.

Example that will create a socket connection through a SOCKS proxy server:
Socket sock = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("test.domain.org", 2130)));

Parameters
proxy the specified proxy for this socket.
Throws
IllegalArgumentException if the argument proxy is null or of an invalid type.

public Socket (String dstName, int dstPort)

Added in API level 1

Creates a new streaming socket connected to the target host specified by the parameters dstName and dstPort. The socket is bound to any available port on the local host.

This implementation tries each IP address for the given hostname (in RFC 3484 order) until it either connects successfully or it exhausts the set.

Parameters
dstName the target host name or IP address to connect to.
dstPort the port on the target host to connect to.
Throws
UnknownHostException if the host name could not be resolved into an IP address.
IOException if an error occurs while creating the socket.

public Socket (String dstName, int dstPort, InetAddress localAddress, int localPort)

Added in API level 1

Creates a new streaming socket connected to the target host specified by the parameters dstName and dstPort. On the local endpoint the socket is bound to the given address localAddress on port localPort. If host is null a loopback address is used to connect to.

This implementation tries each IP address for the given hostname (in RFC 3484 order) until it either connects successfully or it exhausts the set.

Parameters
dstName the target host name or IP address to connect to.
dstPort the port on the target host to connect to.
localAddress the address on the local host to bind to.
localPort the port on the local host to bind to.
Throws
UnknownHostException if the host name could not be resolved into an IP address.
IOException if an error occurs while creating the socket.

public Socket (String hostName, int port, boolean streaming)

Added in API level 1

This constructor was deprecated in API level 1.
Use Socket(String, int) instead of this for streaming sockets or an appropriate constructor of DatagramSocket for UDP transport.

Creates a new streaming or datagram socket connected to the target host specified by the parameters hostName and port. The socket is bound to any available port on the local host.

This implementation tries each IP address for the given hostname (in RFC 3484 order) until it either connects successfully or it exhausts the set.

Parameters
hostName the target host name or IP address to connect to.
port the port on the target host to connect to.
streaming if true a streaming socket is returned, a datagram socket otherwise.
Throws
UnknownHostException if the host name could not be resolved into an IP address.
IOException if an error occurs while creating the socket.

public Socket (InetAddress dstAddress, int dstPort)

Added in API level 1

Creates a new streaming socket connected to the target host specified by the parameters dstAddress and dstPort. The socket is bound to any available port on the local host using a wildcard address.

Parameters
dstAddress the target host address to connect to.
dstPort the port on the target host to connect to.
Throws
IOException if an error occurs while creating the socket.

public Socket (InetAddress dstAddress, int dstPort, InetAddress localAddress, int localPort)

Added in API level 1

Creates a new streaming socket connected to the target host specified by the parameters dstAddress and dstPort.

On the local endpoint the socket is bound to the given address localAddress on port localPort. If localAddress is null the socket will be bound to a wildcard address.

Parameters
dstAddress the target host address to connect to.
dstPort the port on the target host to connect to.
localAddress the address on the local host to bind to, or null.
localPort the port on the local host to bind to.
Throws
IOException if an error occurs while creating the socket.

public Socket (InetAddress addr, int port, boolean streaming)

Added in API level 1

This constructor was deprecated in API level 1.
Use Socket(InetAddress, int) instead of this for streaming sockets or an appropriate constructor of DatagramSocket for UDP transport.

Creates a new streaming or datagram socket connected to the target host specified by the parameters addr and port. The socket is bound to any available port on the local host using a wildcard address.

Parameters
addr the Internet address to connect to.
port the port on the target host to connect to.
streaming if true a streaming socket is returned, a datagram socket otherwise.
Throws
IOException if an error occurs while creating the socket.

Protected Constructors

protected Socket (SocketImpl impl)

Added in API level 1

Creates an unconnected socket with the given socket implementation.

Parameters
impl the socket implementation to be used.
Throws
SocketException if an error occurs while creating the socket.

Public Methods

public void bind (SocketAddress localAddr)

Added in API level 1

Binds this socket to the given local host address and port specified by the SocketAddress localAddr. If localAddr is set to null, this socket will be bound to an available local address on any free port.

Parameters
localAddr the specific address and port on the local machine to bind to.
Throws
IllegalArgumentException if the given SocketAddress is invalid or not supported.
IOException if the socket is already bound or an error occurs while binding.

public synchronized void close ()

Added in API level 1

Closes the socket. It is not possible to reconnect or rebind to this socket thereafter which means a new socket instance has to be created.

Throws
IOException if an error occurs while closing the socket.

public void connect (SocketAddress remoteAddr, int timeout)

Added in API level 1

Connects this socket to the given remote host address and port specified by the SocketAddress remoteAddr with the specified timeout. The connecting method will block until the connection is established or an error occurred.

Parameters
remoteAddr the address and port of the remote host to connect to.
timeout the timeout value in milliseconds or 0 for an infinite timeout.
Throws
IllegalArgumentException if the given SocketAddress is invalid or not supported or the timeout value is negative.
IOException if the socket is already connected or an error occurs while connecting.

public void connect (SocketAddress remoteAddr)

Added in API level 1

Connects this socket to the given remote host address and port specified by the SocketAddress remoteAddr.

Parameters
remoteAddr the address and port of the remote host to connect to.
Throws
IllegalArgumentException if the given SocketAddress is invalid or not supported.
IOException if the socket is already connected or an error occurs while connecting.

public SocketChannel getChannel ()

Added in API level 1

Returns this socket's SocketChannel, if one exists. A channel is available only if this socket wraps a channel. (That is, you can go from a channel to a socket and back again, but you can't go from an arbitrary socket to a channel.) In practice, this means that the socket must have been created by accept() or open().

public InetAddress getInetAddress ()

Added in API level 1

Returns the IP address of the target host this socket is connected to, or null if this socket is not yet connected.

public InputStream getInputStream ()

Added in API level 1

Returns an input stream to read data from this socket. If the socket has an associated SocketChannel and that channel is in non-blocking mode then reads from the stream will throw a IllegalBlockingModeException.

Returns
  • the byte-oriented input stream.
Throws
IOException if an error occurs while creating the input stream or the socket is in an invalid state.

public boolean getKeepAlive ()

Added in API level 1

Returns this socket's SO_KEEPALIVE setting.

public InetAddress getLocalAddress ()

Added in API level 1

Returns the local IP address this socket is bound to, or an address for which isAnyLocalAddress() returns true if the socket is closed or unbound.

public int getLocalPort ()

Added in API level 1

Returns the local port this socket is bound to, or -1 if the socket is unbound. If the socket has been closed this method will still return the local port the socket was bound to.

public SocketAddress getLocalSocketAddress ()

Added in API level 1

Returns the local address and port of this socket as a SocketAddress or null if the socket has never been bound. If the socket is closed but has previously been bound then an address for which isAnyLocalAddress() returns true will be returned with the previously-bound port. This is useful on multihomed hosts.

public boolean getOOBInline ()

Added in API level 1

Returns this socket's SO_OOBINLINE setting.

public OutputStream getOutputStream ()

Added in API level 1

Returns an output stream to write data into this socket. If the socket has an associated SocketChannel and that channel is in non-blocking mode then writes to the stream will throw a IllegalBlockingModeException.

Returns
  • the byte-oriented output stream.
Throws
IOException if an error occurs while creating the output stream or the socket is in an invalid state.

public int getPort ()

Added in API level 1

Returns the port number of the target host this socket is connected to, or 0 if this socket is not yet connected.

public synchronized int getReceiveBufferSize ()

Added in API level 1

Returns this socket's receive buffer size.

public SocketAddress getRemoteSocketAddress ()

Added in API level 1

Returns the remote address and port of this socket as a SocketAddress or null if the socket is not connected.

Returns
  • the remote socket address and port.

public boolean getReuseAddress ()

Added in API level 1

Returns this socket's SO_REUSEADDR setting.

public synchronized int getSendBufferSize ()

Added in API level 1

Returns this socket's send buffer size.

public int getSoLinger ()

Added in API level 1

Returns this socket's linger timeout in seconds, or -1 for no linger (i.e. close will return immediately).

public synchronized int getSoTimeout ()

Added in API level 1

Returns this socket's receive timeout.

public boolean getTcpNoDelay ()

Added in API level 1

Returns this socket's SocketOptions#TCP_NODELAY setting.

public int getTrafficClass ()

Added in API level 1

Returns this socket's setting.

See Also

public boolean isBound ()

Added in API level 1

Returns whether this socket is bound to a local address and port.

Returns
  • true if the socket is bound to a local address, false otherwise.

public boolean isClosed ()

Added in API level 1

Returns whether this socket is closed.

Returns
  • true if the socket is closed, false otherwise.

public boolean isConnected ()

Added in API level 1

Returns whether this socket is connected to a remote host.

Returns
  • true if the socket is connected, false otherwise.

public boolean isInputShutdown ()

Added in API level 1

Returns whether the incoming channel of the socket has already been closed.

Returns
  • true if reading from this socket is not possible anymore, false otherwise.

public boolean isOutputShutdown ()

Added in API level 1

Returns whether the outgoing channel of the socket has already been closed.

Returns
  • true if writing to this socket is not possible anymore, false otherwise.

public void sendUrgentData (int value)

Added in API level 1

Sends the given single byte data which is represented by the lowest octet of value as "TCP urgent data".

Parameters
value the byte of urgent data to be sent.
Throws
IOException if an error occurs while sending urgent data.

public void setKeepAlive (boolean keepAlive)

Added in API level 1

Sets this socket's SO_KEEPALIVE option.

public void setOOBInline (boolean oobinline)

Added in API level 1

Sets this socket's SO_OOBINLINE option.

public void setPerformancePreferences (int connectionTime, int latency, int bandwidth)

Added in API level 1

Sets performance preferences for connectionTime, latency and bandwidth.

This method does currently nothing.

Parameters
connectionTime the value representing the importance of a short connecting time.
latency the value representing the importance of low latency.
bandwidth the value representing the importance of high bandwidth.

public synchronized void setReceiveBufferSize (int size)

Added in API level 1

Sets this socket's receive buffer size.

public void setReuseAddress (boolean reuse)

Added in API level 1

Sets this socket's SO_REUSEADDR option.

public synchronized void setSendBufferSize (int size)

Added in API level 1

Sets this socket's send buffer size.

public void setSoLinger (boolean on, int timeout)

Added in API level 1

Sets this socket's linger timeout in seconds. If on is false, timeout is irrelevant.

public synchronized void setSoTimeout (int timeout)

Added in API level 1

Sets this socket's read timeout in milliseconds. Use 0 for no timeout. To take effect, this option must be set before the blocking method was called.

public static synchronized void setSocketImplFactory (SocketImplFactory fac)

Added in API level 1

Sets the internal factory for creating socket implementations. This may only be executed once during the lifetime of the application.

Parameters
fac the socket implementation factory to be set.
Throws
IOException if the factory has been already set.

public void setTcpNoDelay (boolean on)

Added in API level 1

Sets this socket's TCP_NODELAY option.

public void setTrafficClass (int value)

Added in API level 1

Sets this socket's IP_TOS value for every packet sent by this socket.

public void shutdownInput ()

Added in API level 1

Closes the input stream of this socket. Any further data sent to this socket will be discarded. Reading from this socket after this method has been called will return the value EOF.

Throws
IOException if an error occurs while closing the socket input stream.
SocketException if the input stream is already closed.

public void shutdownOutput ()

Added in API level 1

Closes the output stream of this socket. All buffered data will be sent followed by the termination sequence. Writing to the closed output stream will cause an IOException.

Throws
IOException if an error occurs while closing the socket output stream.
SocketException if the output stream is already closed.

public String toString ()

Added in API level 1

Returns a String containing a concise, human-readable description of the socket.

Returns
  • the textual representation of this socket.