java.net
Class Socket

java.lang.Object sample code for java.lang.Object definition code for java.lang.Object 
  extended by java.net.Socket

public class Socket
extends Object sample code for java.lang.Object definition code for java.lang.Object

This class implements client sockets (also called just "sockets"). A socket is an endpoint for communication between two machines.

The actual work of the socket is performed by an instance of the SocketImpl class. An application, by changing the socket factory that creates the socket implementation, can configure itself to create sockets appropriate to the local firewall.

Since:
JDK1.0
See Also:
setSocketImplFactory(java.net.SocketImplFactory) sample code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) definition code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) , SocketImpl sample code for java.net.SocketImpl definition code for java.net.SocketImpl , SocketChannel sample code for java.nio.channels.SocketChannel definition code for java.nio.channels.SocketChannel

Constructor Summary
  Socket sample code for java.net.Socket.Socket() definition code for java.net.Socket.Socket() ()
          Creates an unconnected socket, with the system-default type of SocketImpl.
  Socket sample code for java.net.Socket.Socket(java.net.InetAddress, int) definition code for java.net.Socket.Socket(java.net.InetAddress, int) (InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  address, int port)
          Creates a stream socket and connects it to the specified port number at the specified IP address.
  Socket sample code for java.net.Socket.Socket(java.net.InetAddress, int, boolean) definition code for java.net.Socket.Socket(java.net.InetAddress, int, boolean) (InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  host, int port, boolean stream)
          Deprecated. Use DatagramSocket instead for UDP transport.
  Socket sample code for java.net.Socket.Socket(java.net.InetAddress, int, java.net.InetAddress, int) definition code for java.net.Socket.Socket(java.net.InetAddress, int, java.net.InetAddress, int) (InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  address, int port, InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  localAddr, int localPort)
          Creates a socket and connects it to the specified remote address on the specified remote port.
  Socket sample code for java.net.Socket.Socket(java.net.Proxy) definition code for java.net.Socket.Socket(java.net.Proxy) (Proxy sample code for java.net.Proxy definition code for java.net.Proxy  proxy)
          Creates an unconnected socket, specifying the type of proxy, if any, that should be used regardless of any other settings.
protected Socket sample code for java.net.Socket.Socket(java.net.SocketImpl) definition code for java.net.Socket.Socket(java.net.SocketImpl) (SocketImpl sample code for java.net.SocketImpl definition code for java.net.SocketImpl  impl)
          Creates an unconnected Socket with a user-specified SocketImpl.
  Socket sample code for java.net.Socket.Socket(java.lang.String, int) definition code for java.net.Socket.Socket(java.lang.String, int) (String sample code for java.lang.String definition code for java.lang.String  host, int port)
          Creates a stream socket and connects it to the specified port number on the named host.
  Socket sample code for java.net.Socket.Socket(java.lang.String, int, boolean) definition code for java.net.Socket.Socket(java.lang.String, int, boolean) (String sample code for java.lang.String definition code for java.lang.String  host, int port, boolean stream)
          Deprecated. Use DatagramSocket instead for UDP transport.
  Socket sample code for java.net.Socket.Socket(java.lang.String, int, java.net.InetAddress, int) definition code for java.net.Socket.Socket(java.lang.String, int, java.net.InetAddress, int) (String sample code for java.lang.String definition code for java.lang.String  host, int port, InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  localAddr, int localPort)
          Creates a socket and connects it to the specified remote host on the specified remote port.
 
Method Summary
 void bind sample code for java.net.Socket.bind(java.net.SocketAddress) definition code for java.net.Socket.bind(java.net.SocketAddress) (SocketAddress sample code for java.net.SocketAddress definition code for java.net.SocketAddress  bindpoint)
          Binds the socket to a local address.
 void close sample code for java.net.Socket.close() definition code for java.net.Socket.close() ()
          Closes this socket.
 void connect sample code for java.net.Socket.connect(java.net.SocketAddress) definition code for java.net.Socket.connect(java.net.SocketAddress) (SocketAddress sample code for java.net.SocketAddress definition code for java.net.SocketAddress  endpoint)
          Connects this socket to the server.
 void connect sample code for java.net.Socket.connect(java.net.SocketAddress, int) definition code for java.net.Socket.connect(java.net.SocketAddress, int) (SocketAddress sample code for java.net.SocketAddress definition code for java.net.SocketAddress  endpoint, int timeout)
          Connects this socket to the server with a specified timeout value.
 SocketChannel sample code for java.nio.channels.SocketChannel definition code for java.nio.channels.SocketChannel getChannel sample code for java.net.Socket.getChannel() definition code for java.net.Socket.getChannel() ()
          Returns the unique SocketChannel sample code for java.nio.channels.SocketChannel definition code for java.nio.channels.SocketChannel object associated with this socket, if any.
 InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress getInetAddress sample code for java.net.Socket.getInetAddress() definition code for java.net.Socket.getInetAddress() ()
          Returns the address to which the socket is connected.
 InputStream sample code for java.io.InputStream definition code for java.io.InputStream getInputStream sample code for java.net.Socket.getInputStream() definition code for java.net.Socket.getInputStream() ()
          Returns an input stream for this socket.
 boolean getKeepAlive sample code for java.net.Socket.getKeepAlive() definition code for java.net.Socket.getKeepAlive() ()
          Tests if SO_KEEPALIVE is enabled.
 InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress getLocalAddress sample code for java.net.Socket.getLocalAddress() definition code for java.net.Socket.getLocalAddress() ()
          Gets the local address to which the socket is bound.
 int getLocalPort sample code for java.net.Socket.getLocalPort() definition code for java.net.Socket.getLocalPort() ()
          Returns the local port to which this socket is bound.
 SocketAddress sample code for java.net.SocketAddress definition code for java.net.SocketAddress getLocalSocketAddress sample code for java.net.Socket.getLocalSocketAddress() definition code for java.net.Socket.getLocalSocketAddress() ()
          Returns the address of the endpoint this socket is bound to, or null if it is not bound yet.
 boolean getOOBInline sample code for java.net.Socket.getOOBInline() definition code for java.net.Socket.getOOBInline() ()
          Tests if OOBINLINE is enabled.
 OutputStream sample code for java.io.OutputStream definition code for java.io.OutputStream getOutputStream sample code for java.net.Socket.getOutputStream() definition code for java.net.Socket.getOutputStream() ()
          Returns an output stream for this socket.
 int getPort sample code for java.net.Socket.getPort() definition code for java.net.Socket.getPort() ()
          Returns the remote port to which this socket is connected.
 int getReceiveBufferSize sample code for java.net.Socket.getReceiveBufferSize() definition code for java.net.Socket.getReceiveBufferSize() ()
          Gets the value of the SO_RCVBUF option for this Socket, that is the buffer size used by the platform for input on this Socket.
 SocketAddress sample code for java.net.SocketAddress definition code for java.net.SocketAddress getRemoteSocketAddress sample code for java.net.Socket.getRemoteSocketAddress() definition code for java.net.Socket.getRemoteSocketAddress() ()
          Returns the address of the endpoint this socket is connected to, or null if it is unconnected.
 boolean getReuseAddress sample code for java.net.Socket.getReuseAddress() definition code for java.net.Socket.getReuseAddress() ()
          Tests if SO_REUSEADDR is enabled.
 int getSendBufferSize sample code for java.net.Socket.getSendBufferSize() definition code for java.net.Socket.getSendBufferSize() ()
          Get value of the SO_SNDBUF option for this Socket, that is the buffer size used by the platform for output on this Socket.
 int getSoLinger sample code for java.net.Socket.getSoLinger() definition code for java.net.Socket.getSoLinger() ()
          Returns setting for SO_LINGER.
 int getSoTimeout sample code for java.net.Socket.getSoTimeout() definition code for java.net.Socket.getSoTimeout() ()
          Returns setting for SO_TIMEOUT.
 boolean getTcpNoDelay sample code for java.net.Socket.getTcpNoDelay() definition code for java.net.Socket.getTcpNoDelay() ()
          Tests if TCP_NODELAY is enabled.
 int getTrafficClass sample code for java.net.Socket.getTrafficClass() definition code for java.net.Socket.getTrafficClass() ()
          Gets traffic class or type-of-service in the IP header for packets sent from this Socket
 boolean isBound sample code for java.net.Socket.isBound() definition code for java.net.Socket.isBound() ()
          Returns the binding state of the socket.
 boolean isClosed sample code for java.net.Socket.isClosed() definition code for java.net.Socket.isClosed() ()
          Returns the closed state of the socket.
 boolean isConnected sample code for java.net.Socket.isConnected() definition code for java.net.Socket.isConnected() ()
          Returns the connection state of the socket.
 boolean isInputShutdown sample code for java.net.Socket.isInputShutdown() definition code for java.net.Socket.isInputShutdown() ()
          Returns whether the read-half of the socket connection is closed.
 boolean isOutputShutdown sample code for java.net.Socket.isOutputShutdown() definition code for java.net.Socket.isOutputShutdown() ()
          Returns whether the write-half of the socket connection is closed.
 void sendUrgentData sample code for java.net.Socket.sendUrgentData(int) definition code for java.net.Socket.sendUrgentData(int) (int data)
          Send one byte of urgent data on the socket.
 void setKeepAlive sample code for java.net.Socket.setKeepAlive(boolean) definition code for java.net.Socket.setKeepAlive(boolean) (boolean on)
          Enable/disable SO_KEEPALIVE.
 void setOOBInline sample code for java.net.Socket.setOOBInline(boolean) definition code for java.net.Socket.setOOBInline(boolean) (boolean on)
          Enable/disable OOBINLINE (receipt of TCP urgent data) By default, this option is disabled and TCP urgent data received on a socket is silently discarded.
 void setPerformancePreferences sample code for java.net.Socket.setPerformancePreferences(int, int, int) definition code for java.net.Socket.setPerformancePreferences(int, int, int) (int connectionTime, int latency, int bandwidth)
          Sets performance preferences for this socket.
 void setReceiveBufferSize sample code for java.net.Socket.setReceiveBufferSize(int) definition code for java.net.Socket.setReceiveBufferSize(int) (int size)
          Sets the SO_RCVBUF option to the specified value for this Socket.
 void setReuseAddress sample code for java.net.Socket.setReuseAddress(boolean) definition code for java.net.Socket.setReuseAddress(boolean) (boolean on)
          Enable/disable the SO_REUSEADDR socket option.
 void setSendBufferSize sample code for java.net.Socket.setSendBufferSize(int) definition code for java.net.Socket.setSendBufferSize(int) (int size)
          Sets the SO_SNDBUF option to the specified value for this Socket.
static void setSocketImplFactory sample code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) definition code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) (SocketImplFactory sample code for java.net.SocketImplFactory definition code for java.net.SocketImplFactory  fac)
          Sets the client socket implementation factory for the application.
 void setSoLinger sample code for java.net.Socket.setSoLinger(boolean, int) definition code for java.net.Socket.setSoLinger(boolean, int) (boolean on, int linger)
          Enable/disable SO_LINGER with the specified linger time in seconds.
 void setSoTimeout sample code for java.net.Socket.setSoTimeout(int) definition code for java.net.Socket.setSoTimeout(int) (int timeout)
          Enable/disable SO_TIMEOUT with the specified timeout, in milliseconds.
 void setTcpNoDelay sample code for java.net.Socket.setTcpNoDelay(boolean) definition code for java.net.Socket.setTcpNoDelay(boolean) (boolean on)
          Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm).
 void setTrafficClass sample code for java.net.Socket.setTrafficClass(int) definition code for java.net.Socket.setTrafficClass(int) (int tc)
          Sets traffic class or type-of-service octet in the IP header for packets sent from this Socket.
 void shutdownInput sample code for java.net.Socket.shutdownInput() definition code for java.net.Socket.shutdownInput() ()
          Places the input stream for this socket at "end of stream".
 void shutdownOutput sample code for java.net.Socket.shutdownOutput() definition code for java.net.Socket.shutdownOutput() ()
          Disables the output stream for this socket.
 String sample code for java.lang.String definition code for java.lang.String toString sample code for java.net.Socket.toString() definition code for java.net.Socket.toString() ()
          Converts this socket to a String.
 
Methods inherited from class java.lang.Object sample code for java.lang.Object definition code for java.lang.Object
clone sample code for java.lang.Object.clone() definition code for java.lang.Object.clone() , equals sample code for java.lang.Object.equals(java.lang.Object) definition code for java.lang.Object.equals(java.lang.Object) , finalize sample code for java.lang.Object.finalize() definition code for java.lang.Object.finalize() , getClass sample code for java.lang.Object.getClass() definition code for java.lang.Object.getClass() , hashCode sample code for java.lang.Object.hashCode() definition code for java.lang.Object.hashCode() , notify sample code for java.lang.Object.notify() definition code for java.lang.Object.notify() , notifyAll sample code for java.lang.Object.notifyAll() definition code for java.lang.Object.notifyAll() , wait sample code for java.lang.Object.wait() definition code for java.lang.Object.wait() , wait sample code for java.lang.Object.wait(long) definition code for java.lang.Object.wait(long) , wait sample code for java.lang.Object.wait(long, int) definition code for java.lang.Object.wait(long, int)
 

Constructor Detail

Socket sample code for java.net.Socket() definition code for java.net.Socket()

public Socket()
Creates an unconnected socket, with the system-default type of SocketImpl.

Since:
JDK1.1

Socket sample code for java.net.Socket(java.net.Proxy) definition code for java.net.Socket(java.net.Proxy)

public Socket(Proxy sample code for java.net.Proxy definition code for java.net.Proxy  proxy)
Creates an unconnected socket, specifying the type of proxy, if any, that should be used regardless of any other settings.

If there is a security manager, its checkConnect method is called with the proxy host address and port number as its arguments. This could result in a SecurityException.

Examples:

Parameters:
proxy - a Proxy sample code for java.net.Proxy definition code for java.net.Proxy object specifying what kind of proxying should be used.
Throws:
IllegalArgumentException sample code for java.lang.IllegalArgumentException definition code for java.lang.IllegalArgumentException - if the proxy is of an invalid type or null.
SecurityException sample code for java.lang.SecurityException definition code for java.lang.SecurityException - if a security manager is present and permission to connect to the proxy is denied.
Since:
1.5
See Also:
ProxySelector sample code for java.net.ProxySelector definition code for java.net.ProxySelector , Proxy sample code for java.net.Proxy definition code for java.net.Proxy

Socket sample code for java.net.Socket(java.net.SocketImpl) definition code for java.net.Socket(java.net.SocketImpl)

protected Socket(SocketImpl sample code for java.net.SocketImpl definition code for java.net.SocketImpl  impl)
          throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Creates an unconnected Socket with a user-specified SocketImpl.

Parameters:
impl - an instance of a SocketImpl the subclass wishes to use on the Socket.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
JDK1.1

Socket sample code for java.net.Socket(java.lang.String, int) definition code for java.net.Socket(java.lang.String, int)

public Socket(String sample code for java.lang.String definition code for java.lang.String  host,
              int port)
       throws UnknownHostException sample code for java.net.UnknownHostException definition code for java.net.UnknownHostException ,
              IOException sample code for java.io.IOException definition code for java.io.IOException 
Creates a stream socket and connects it to the specified port number on the named host.

If the specified host is null it is the equivalent of specifying the address as InetAddress.getByName sample code for java.net.InetAddress.getByName(java.lang.String) definition code for java.net.InetAddress.getByName(java.lang.String) (null). In other words, it is equivalent to specifying an address of the loopback interface.

If the application has specified a server socket factory, that factory's createSocketImpl method is called to create the actual socket implementation. Otherwise a "plain" socket is created.

If there is a security manager, its checkConnect method is called with the host address and port as its arguments. This could result in a SecurityException.

Parameters:
host - the host name, or null for the loopback address.
port - the port number.
Throws:
UnknownHostException sample code for java.net.UnknownHostException definition code for java.net.UnknownHostException - if the IP address of the host could not be determined.
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when creating the socket.
SecurityException sample code for java.lang.SecurityException definition code for java.lang.SecurityException - if a security manager exists and its checkConnect method doesn't allow the operation.
See Also:
setSocketImplFactory(java.net.SocketImplFactory) sample code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) definition code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) , SocketImpl sample code for java.net.SocketImpl definition code for java.net.SocketImpl , SocketImplFactory.createSocketImpl() sample code for java.net.SocketImplFactory.createSocketImpl() definition code for java.net.SocketImplFactory.createSocketImpl() , SecurityManager.checkConnect(java.lang.String, int) sample code for java.lang.SecurityManager.checkConnect(java.lang.String, int) definition code for java.lang.SecurityManager.checkConnect(java.lang.String, int)

Socket sample code for java.net.Socket(java.net.InetAddress, int) definition code for java.net.Socket(java.net.InetAddress, int)

public Socket(InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  address,
              int port)
       throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Creates a stream socket and connects it to the specified port number at the specified IP address.

If the application has specified a socket factory, that factory's createSocketImpl method is called to create the actual socket implementation. Otherwise a "plain" socket is created.

If there is a security manager, its checkConnect method is called with the host address and port as its arguments. This could result in a SecurityException.

Parameters:
address - the IP address.
port - the port number.
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when creating the socket.
SecurityException sample code for java.lang.SecurityException definition code for java.lang.SecurityException - if a security manager exists and its checkConnect method doesn't allow the operation.
See Also:
setSocketImplFactory(java.net.SocketImplFactory) sample code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) definition code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) , SocketImpl sample code for java.net.SocketImpl definition code for java.net.SocketImpl , SocketImplFactory.createSocketImpl() sample code for java.net.SocketImplFactory.createSocketImpl() definition code for java.net.SocketImplFactory.createSocketImpl() , SecurityManager.checkConnect(java.lang.String, int) sample code for java.lang.SecurityManager.checkConnect(java.lang.String, int) definition code for java.lang.SecurityManager.checkConnect(java.lang.String, int)

Socket sample code for java.net.Socket(java.lang.String, int, java.net.InetAddress, int) definition code for java.net.Socket(java.lang.String, int, java.net.InetAddress, int)

public Socket(String sample code for java.lang.String definition code for java.lang.String  host,
              int port,
              InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  localAddr,
              int localPort)
       throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Creates a socket and connects it to the specified remote host on the specified remote port. The Socket will also bind() to the local address and port supplied.

If the specified host is null it is the equivalent of specifying the address as InetAddress.getByName sample code for java.net.InetAddress.getByName(java.lang.String) definition code for java.net.InetAddress.getByName(java.lang.String) (null). In other words, it is equivalent to specifying an address of the loopback interface.

If there is a security manager, its checkConnect method is called with the host address and port as its arguments. This could result in a SecurityException.

Parameters:
host - the name of the remote host, or null for the loopback address.
port - the remote port
localAddr - the local address the socket is bound to
localPort - the local port the socket is bound to
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when creating the socket.
SecurityException sample code for java.lang.SecurityException definition code for java.lang.SecurityException - if a security manager exists and its checkConnect method doesn't allow the operation.
Since:
JDK1.1
See Also:
SecurityManager.checkConnect(java.lang.String, int) sample code for java.lang.SecurityManager.checkConnect(java.lang.String, int) definition code for java.lang.SecurityManager.checkConnect(java.lang.String, int)

Socket sample code for java.net.Socket(java.net.InetAddress, int, java.net.InetAddress, int) definition code for java.net.Socket(java.net.InetAddress, int, java.net.InetAddress, int)

public Socket(InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  address,
              int port,
              InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  localAddr,
              int localPort)
       throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Creates a socket and connects it to the specified remote address on the specified remote port. The Socket will also bind() to the local address and port supplied.

If there is a security manager, its checkConnect method is called with the host address and port as its arguments. This could result in a SecurityException.

Parameters:
address - the remote address
port - the remote port
localAddr - the local address the socket is bound to
localPort - the local port the socket is bound to
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when creating the socket.
SecurityException sample code for java.lang.SecurityException definition code for java.lang.SecurityException - if a security manager exists and its checkConnect method doesn't allow the operation.
Since:
JDK1.1
See Also:
SecurityManager.checkConnect(java.lang.String, int) sample code for java.lang.SecurityManager.checkConnect(java.lang.String, int) definition code for java.lang.SecurityManager.checkConnect(java.lang.String, int)

Socket sample code for java.net.Socket(java.lang.String, int, boolean) definition code for java.net.Socket(java.lang.String, int, boolean)

@Deprecated
public Socket(String sample code for java.lang.String definition code for java.lang.String  host,
                         int port,
                         boolean stream)
       throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Deprecated. Use DatagramSocket instead for UDP transport.

Creates a stream socket and connects it to the specified port number on the named host.

If the specified host is null it is the equivalent of specifying the address as InetAddress.getByName sample code for java.net.InetAddress.getByName(java.lang.String) definition code for java.net.InetAddress.getByName(java.lang.String) (null). In other words, it is equivalent to specifying an address of the loopback interface.

If the stream argument is true, this creates a stream socket. If the stream argument is false, it creates a datagram socket.

If the application has specified a server socket factory, that factory's createSocketImpl method is called to create the actual socket implementation. Otherwise a "plain" socket is created.

If there is a security manager, its checkConnect method is called with the host address and port as its arguments. This could result in a SecurityException.

If a UDP socket is used, TCP/IP related socket options will not apply.

Parameters:
host - the host name, or null for the loopback address.
port - the port number.
stream - a boolean indicating whether this is a stream socket or a datagram socket.
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when creating the socket.
SecurityException sample code for java.lang.SecurityException definition code for java.lang.SecurityException - if a security manager exists and its checkConnect method doesn't allow the operation.
See Also:
setSocketImplFactory(java.net.SocketImplFactory) sample code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) definition code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) , SocketImpl sample code for java.net.SocketImpl definition code for java.net.SocketImpl , SocketImplFactory.createSocketImpl() sample code for java.net.SocketImplFactory.createSocketImpl() definition code for java.net.SocketImplFactory.createSocketImpl() , SecurityManager.checkConnect(java.lang.String, int) sample code for java.lang.SecurityManager.checkConnect(java.lang.String, int) definition code for java.lang.SecurityManager.checkConnect(java.lang.String, int)

Socket sample code for java.net.Socket(java.net.InetAddress, int, boolean) definition code for java.net.Socket(java.net.InetAddress, int, boolean)

@Deprecated
public Socket(InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  host,
                         int port,
                         boolean stream)
       throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Deprecated. Use DatagramSocket instead for UDP transport.

Creates a socket and connects it to the specified port number at the specified IP address.

If the stream argument is true, this creates a stream socket. If the stream argument is false, it creates a datagram socket.

If the application has specified a server socket factory, that factory's createSocketImpl method is called to create the actual socket implementation. Otherwise a "plain" socket is created.

If there is a security manager, its checkConnect method is called with host.getHostAddress() and port as its arguments. This could result in a SecurityException.

If UDP socket is used, TCP/IP related socket options will not apply.

Parameters:
host - the IP address.
port - the port number.
stream - if true, create a stream socket; otherwise, create a datagram socket.
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when creating the socket.
SecurityException sample code for java.lang.SecurityException definition code for java.lang.SecurityException - if a security manager exists and its checkConnect method doesn't allow the operation.
See Also:
setSocketImplFactory(java.net.SocketImplFactory) sample code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) definition code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) , SocketImpl sample code for java.net.SocketImpl definition code for java.net.SocketImpl , SocketImplFactory.createSocketImpl() sample code for java.net.SocketImplFactory.createSocketImpl() definition code for java.net.SocketImplFactory.createSocketImpl() , SecurityManager.checkConnect(java.lang.String, int) sample code for java.lang.SecurityManager.checkConnect(java.lang.String, int) definition code for java.lang.SecurityManager.checkConnect(java.lang.String, int)
Method Detail

connect sample code for java.net.Socket.connect(java.net.SocketAddress) definition code for java.net.Socket.connect(java.net.SocketAddress)

public void connect(SocketAddress sample code for java.net.SocketAddress definition code for java.net.SocketAddress  endpoint)
             throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Connects this socket to the server.

Parameters:
endpoint - the SocketAddress
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an error occurs during the connection
IllegalBlockingModeException sample code for java.nio.channels.IllegalBlockingModeException definition code for java.nio.channels.IllegalBlockingModeException - if this socket has an associated channel, and the channel is in non-blocking mode
IllegalArgumentException sample code for java.lang.IllegalArgumentException definition code for java.lang.IllegalArgumentException - if endpoint is null or is a SocketAddress subclass not supported by this socket
Since:
1.4

connect sample code for java.net.Socket.connect(java.net.SocketAddress, int) definition code for java.net.Socket.connect(java.net.SocketAddress, int)

public void connect(SocketAddress sample code for java.net.SocketAddress definition code for java.net.SocketAddress  endpoint,
                    int timeout)
             throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Connects this socket to the server with a specified timeout value. A timeout of zero is interpreted as an infinite timeout. The connection will then block until established or an error occurs.

Parameters:
endpoint - the SocketAddress
timeout - the timeout value to be used in milliseconds.
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an error occurs during the connection
SocketTimeoutException sample code for java.net.SocketTimeoutException definition code for java.net.SocketTimeoutException - if timeout expires before connecting
IllegalBlockingModeException sample code for java.nio.channels.IllegalBlockingModeException definition code for java.nio.channels.IllegalBlockingModeException - if this socket has an associated channel, and the channel is in non-blocking mode
IllegalArgumentException sample code for java.lang.IllegalArgumentException definition code for java.lang.IllegalArgumentException - if endpoint is null or is a SocketAddress subclass not supported by this socket
Since:
1.4

bind sample code for java.net.Socket.bind(java.net.SocketAddress) definition code for java.net.Socket.bind(java.net.SocketAddress)

public void bind(SocketAddress sample code for java.net.SocketAddress definition code for java.net.SocketAddress  bindpoint)
          throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Binds the socket to a local address.

If the address is null, then the system will pick up an ephemeral port and a valid local address to bind the socket.

Parameters:
bindpoint - the SocketAddress to bind to
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if the bind operation fails, or if the socket is already bound.
IllegalArgumentException sample code for java.lang.IllegalArgumentException definition code for java.lang.IllegalArgumentException - if bindpoint is a SocketAddress subclass not supported by this socket
Since:
1.4
See Also:
isBound() sample code for java.net.Socket.isBound() definition code for java.net.Socket.isBound()

getInetAddress sample code for java.net.Socket.getInetAddress() definition code for java.net.Socket.getInetAddress()

public InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  getInetAddress()
Returns the address to which the socket is connected.

Returns:
the remote IP address to which this socket is connected, or null if the socket is not connected.

getLocalAddress sample code for java.net.Socket.getLocalAddress() definition code for java.net.Socket.getLocalAddress()

public InetAddress sample code for java.net.InetAddress definition code for java.net.InetAddress  getLocalAddress()
Gets the local address to which the socket is bound.

Returns:
the local address to which the socket is bound or InetAddress.anyLocalAddress() if the socket is not bound yet.
Since:
JDK1.1

getPort sample code for java.net.Socket.getPort() definition code for java.net.Socket.getPort()

public int getPort()
Returns the remote port to which this socket is connected.

Returns:
the remote port number to which this socket is connected, or 0 if the socket is not connected yet.

getLocalPort sample code for java.net.Socket.getLocalPort() definition code for java.net.Socket.getLocalPort()

public int getLocalPort()
Returns the local port to which this socket is bound.

Returns:
the local port number to which this socket is bound or -1 if the socket is not bound yet.

getRemoteSocketAddress sample code for java.net.Socket.getRemoteSocketAddress() definition code for java.net.Socket.getRemoteSocketAddress()

public SocketAddress sample code for java.net.SocketAddress definition code for java.net.SocketAddress  getRemoteSocketAddress()
Returns the address of the endpoint this socket is connected to, or null if it is unconnected.

Returns:
a SocketAddress reprensenting the remote endpoint of this socket, or null if it is not connected yet.
Since:
1.4
See Also:
getInetAddress() sample code for java.net.Socket.getInetAddress() definition code for java.net.Socket.getInetAddress() , getPort() sample code for java.net.Socket.getPort() definition code for java.net.Socket.getPort() , connect(SocketAddress, int) sample code for java.net.Socket.connect(java.net.SocketAddress, int) definition code for java.net.Socket.connect(java.net.SocketAddress, int) , connect(SocketAddress) sample code for java.net.Socket.connect(java.net.SocketAddress) definition code for java.net.Socket.connect(java.net.SocketAddress)

getLocalSocketAddress sample code for java.net.Socket.getLocalSocketAddress() definition code for java.net.Socket.getLocalSocketAddress()

public SocketAddress sample code for java.net.SocketAddress definition code for java.net.SocketAddress  getLocalSocketAddress()
Returns the address of the endpoint this socket is bound to, or null if it is not bound yet.

Returns:
a SocketAddress representing the local endpoint of this socket, or null if it is not bound yet.
Since:
1.4
See Also:
getLocalAddress() sample code for java.net.Socket.getLocalAddress() definition code for java.net.Socket.getLocalAddress() , getLocalPort() sample code for java.net.Socket.getLocalPort() definition code for java.net.Socket.getLocalPort() , bind(SocketAddress) sample code for java.net.Socket.bind(java.net.SocketAddress) definition code for java.net.Socket.bind(java.net.SocketAddress)

getChannel sample code for java.net.Socket.getChannel() definition code for java.net.Socket.getChannel()

public SocketChannel sample code for java.nio.channels.SocketChannel definition code for java.nio.channels.SocketChannel  getChannel()
Returns the unique SocketChannel sample code for java.nio.channels.SocketChannel definition code for java.nio.channels.SocketChannel object associated with this socket, if any.

A socket will have a channel if, and only if, the channel itself was created via the SocketChannel.open sample code for java.nio.channels.SocketChannel.open() definition code for java.nio.channels.SocketChannel.open() or ServerSocketChannel.accept sample code for java.nio.channels.ServerSocketChannel.accept() definition code for java.nio.channels.ServerSocketChannel.accept() methods.

Returns:
the socket channel associated with this socket, or null if this socket was not created for a channel
Since:
1.4

getInputStream sample code for java.net.Socket.getInputStream() definition code for java.net.Socket.getInputStream()

public InputStream sample code for java.io.InputStream definition code for java.io.InputStream  getInputStream()
                           throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Returns an input stream for this socket.

If this socket has an associated channel then the resulting input stream delegates all of its operations to the channel. If the channel is in non-blocking mode then the input stream's read operations will throw an IllegalBlockingModeException sample code for java.nio.channels.IllegalBlockingModeException definition code for java.nio.channels.IllegalBlockingModeException .

Under abnormal conditions the underlying connection may be broken by the remote host or the network software (for example a connection reset in the case of TCP connections). When a broken connection is detected by the network software the following applies to the returned input stream :-

Returns:
an input stream for reading bytes from this socket.
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when creating the input stream, the socket is closed, the socket is not connected, or the socket input has been shutdown using shutdownInput() sample code for java.net.Socket.shutdownInput() definition code for java.net.Socket.shutdownInput()

getOutputStream sample code for java.net.Socket.getOutputStream() definition code for java.net.Socket.getOutputStream()

public OutputStream sample code for java.io.OutputStream definition code for java.io.OutputStream  getOutputStream()
                             throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Returns an output stream for this socket.

If this socket has an associated channel then the resulting output stream delegates all of its operations to the channel. If the channel is in non-blocking mode then the output stream's write operations will throw an IllegalBlockingModeException sample code for java.nio.channels.IllegalBlockingModeException definition code for java.nio.channels.IllegalBlockingModeException .

Returns:
an output stream for writing bytes to this socket.
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when creating the output stream or if the socket is not connected.

setTcpNoDelay sample code for java.net.Socket.setTcpNoDelay(boolean) definition code for java.net.Socket.setTcpNoDelay(boolean)

public void setTcpNoDelay(boolean on)
                   throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm).

Parameters:
on - true to enable TCP_NODELAY, false to disable.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
JDK1.1
See Also:
getTcpNoDelay() sample code for java.net.Socket.getTcpNoDelay() definition code for java.net.Socket.getTcpNoDelay()

getTcpNoDelay sample code for java.net.Socket.getTcpNoDelay() definition code for java.net.Socket.getTcpNoDelay()

public boolean getTcpNoDelay()
                      throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Tests if TCP_NODELAY is enabled.

Returns:
a boolean indicating whether or not TCP_NODELAY is enabled.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
JDK1.1
See Also:
setTcpNoDelay(boolean) sample code for java.net.Socket.setTcpNoDelay(boolean) definition code for java.net.Socket.setTcpNoDelay(boolean)

setSoLinger sample code for java.net.Socket.setSoLinger(boolean, int) definition code for java.net.Socket.setSoLinger(boolean, int)

public void setSoLinger(boolean on,
                        int linger)
                 throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Enable/disable SO_LINGER with the specified linger time in seconds. The maximum timeout value is platform specific. The setting only affects socket close.

Parameters:
on - whether or not to linger on.
linger - how long to linger for, if on is true.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
IllegalArgumentException sample code for java.lang.IllegalArgumentException definition code for java.lang.IllegalArgumentException - if the linger value is negative.
Since:
JDK1.1
See Also:
getSoLinger() sample code for java.net.Socket.getSoLinger() definition code for java.net.Socket.getSoLinger()

getSoLinger sample code for java.net.Socket.getSoLinger() definition code for java.net.Socket.getSoLinger()

public int getSoLinger()
                throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Returns setting for SO_LINGER. -1 returns implies that the option is disabled. The setting only affects socket close.

Returns:
the setting for SO_LINGER.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
JDK1.1
See Also:
setSoLinger(boolean, int) sample code for java.net.Socket.setSoLinger(boolean, int) definition code for java.net.Socket.setSoLinger(boolean, int)

sendUrgentData sample code for java.net.Socket.sendUrgentData(int) definition code for java.net.Socket.sendUrgentData(int)

public void sendUrgentData(int data)
                    throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Send one byte of urgent data on the socket. The byte to be sent is the lowest eight bits of the data parameter. The urgent byte is sent after any preceding writes to the socket OutputStream and before any future writes to the OutputStream.

Parameters:
data - The byte of data to send
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if there is an error sending the data.
Since:
1.4

setOOBInline sample code for java.net.Socket.setOOBInline(boolean) definition code for java.net.Socket.setOOBInline(boolean)

public void setOOBInline(boolean on)
                  throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Enable/disable OOBINLINE (receipt of TCP urgent data) By default, this option is disabled and TCP urgent data received on a socket is silently discarded. If the user wishes to receive urgent data, then this option must be enabled. When enabled, urgent data is received inline with normal data.

Note, only limited support is provided for handling incoming urgent data. In particular, no notification of incoming urgent data is provided and there is no capability to distinguish between normal data and urgent data unless provided by a higher level protocol.

Parameters:
on - true to enable OOBINLINE, false to disable.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
1.4
See Also:
getOOBInline() sample code for java.net.Socket.getOOBInline() definition code for java.net.Socket.getOOBInline()

getOOBInline sample code for java.net.Socket.getOOBInline() definition code for java.net.Socket.getOOBInline()

public boolean getOOBInline()
                     throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Tests if OOBINLINE is enabled.

Returns:
a boolean indicating whether or not OOBINLINE is enabled.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
1.4
See Also:
setOOBInline(boolean) sample code for java.net.Socket.setOOBInline(boolean) definition code for java.net.Socket.setOOBInline(boolean)

setSoTimeout sample code for java.net.Socket.setSoTimeout(int) definition code for java.net.Socket.setSoTimeout(int)

public void setSoTimeout(int timeout)
                  throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Enable/disable SO_TIMEOUT with the specified timeout, in milliseconds. With this option set to a non-zero timeout, a read() call on the InputStream associated with this Socket will block for only this amount of time. If the timeout expires, a java.net.SocketTimeoutException is raised, though the Socket is still valid. The option must be enabled prior to entering the blocking operation to have effect. The timeout must be > 0. A timeout of zero is interpreted as an infinite timeout.

Parameters:
timeout - the specified timeout, in milliseconds.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
JDK 1.1
See Also:
getSoTimeout() sample code for java.net.Socket.getSoTimeout() definition code for java.net.Socket.getSoTimeout()

getSoTimeout sample code for java.net.Socket.getSoTimeout() definition code for java.net.Socket.getSoTimeout()

public int getSoTimeout()
                 throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Returns setting for SO_TIMEOUT. 0 returns implies that the option is disabled (i.e., timeout of infinity).

Returns:
the setting for SO_TIMEOUT
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
JDK1.1
See Also:
setSoTimeout(int) sample code for java.net.Socket.setSoTimeout(int) definition code for java.net.Socket.setSoTimeout(int)

setSendBufferSize sample code for java.net.Socket.setSendBufferSize(int) definition code for java.net.Socket.setSendBufferSize(int)

public void setSendBufferSize(int size)
                       throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Sets the SO_SNDBUF option to the specified value for this Socket. The SO_SNDBUF option is used by the platform's networking code as a hint for the size to set the underlying network I/O buffers.

Because SO_SNDBUF is a hint, applications that want to verify what size the buffers were set to should call getSendBufferSize() sample code for java.net.Socket.getSendBufferSize() definition code for java.net.Socket.getSendBufferSize() .

Parameters:
size - the size to which to set the send buffer size. This value must be greater than 0.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
IllegalArgumentException sample code for java.lang.IllegalArgumentException definition code for java.lang.IllegalArgumentException - if the value is 0 or is negative.
Since:
1.2
See Also:
getSendBufferSize() sample code for java.net.Socket.getSendBufferSize() definition code for java.net.Socket.getSendBufferSize()

getSendBufferSize sample code for java.net.Socket.getSendBufferSize() definition code for java.net.Socket.getSendBufferSize()

public int getSendBufferSize()
                      throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Get value of the SO_SNDBUF option for this Socket, that is the buffer size used by the platform for output on this Socket.

Returns:
the value of the SO_SNDBUF option for this Socket.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
1.2
See Also:
setSendBufferSize(int) sample code for java.net.Socket.setSendBufferSize(int) definition code for java.net.Socket.setSendBufferSize(int)

setReceiveBufferSize sample code for java.net.Socket.setReceiveBufferSize(int) definition code for java.net.Socket.setReceiveBufferSize(int)

public void setReceiveBufferSize(int size)
                          throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Sets the SO_RCVBUF option to the specified value for this Socket. The SO_RCVBUF option is used by the platform's networking code as a hint for the size to set the underlying network I/O buffers.

Increasing the receive buffer size can increase the performance of network I/O for high-volume connection, while decreasing it can help reduce the backlog of incoming data.

Because SO_RCVBUF is a hint, applications that want to verify what size the buffers were set to should call getReceiveBufferSize() sample code for java.net.Socket.getReceiveBufferSize() definition code for java.net.Socket.getReceiveBufferSize() .

The value of SO_RCVBUF is also used to set the TCP receive window that is advertized to the remote peer. Generally, the window size can be modified at any time when a socket is connected. However, if a receive window larger than 64K is required then this must be requested before the socket is connected to the remote peer. There are two cases to be aware of:

  1. For sockets accepted from a ServerSocket, this must be done by calling ServerSocket.setReceiveBufferSize(int) sample code for java.net.ServerSocket.setReceiveBufferSize(int) definition code for java.net.ServerSocket.setReceiveBufferSize(int) before the ServerSocket is bound to a local address.

  2. For client sockets, setReceiveBufferSize() must be called before connecting the socket to its remote peer.

Parameters:
size - the size to which to set the receive buffer size. This value must be greater than 0.
Throws:
IllegalArgumentException sample code for java.lang.IllegalArgumentException definition code for java.lang.IllegalArgumentException - if the value is 0 or is negative.
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
1.2
See Also:
getReceiveBufferSize() sample code for java.net.Socket.getReceiveBufferSize() definition code for java.net.Socket.getReceiveBufferSize() , ServerSocket.setReceiveBufferSize(int) sample code for java.net.ServerSocket.setReceiveBufferSize(int) definition code for java.net.ServerSocket.setReceiveBufferSize(int)

getReceiveBufferSize sample code for java.net.Socket.getReceiveBufferSize() definition code for java.net.Socket.getReceiveBufferSize()

public int getReceiveBufferSize()
                         throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Gets the value of the SO_RCVBUF option for this Socket, that is the buffer size used by the platform for input on this Socket.

Returns:
the value of the SO_RCVBUF option for this Socket.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
1.2
See Also:
setReceiveBufferSize(int) sample code for java.net.Socket.setReceiveBufferSize(int) definition code for java.net.Socket.setReceiveBufferSize(int)

setKeepAlive sample code for java.net.Socket.setKeepAlive(boolean) definition code for java.net.Socket.setKeepAlive(boolean)

public void setKeepAlive(boolean on)
                  throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Enable/disable SO_KEEPALIVE.

Parameters:
on - whether or not to have socket keep alive turned on.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
1.3
See Also:
getKeepAlive() sample code for java.net.Socket.getKeepAlive() definition code for java.net.Socket.getKeepAlive()

getKeepAlive sample code for java.net.Socket.getKeepAlive() definition code for java.net.Socket.getKeepAlive()

public boolean getKeepAlive()
                     throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Tests if SO_KEEPALIVE is enabled.

Returns:
a boolean indicating whether or not SO_KEEPALIVE is enabled.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
1.3
See Also:
setKeepAlive(boolean) sample code for java.net.Socket.setKeepAlive(boolean) definition code for java.net.Socket.setKeepAlive(boolean)

setTrafficClass sample code for java.net.Socket.setTrafficClass(int) definition code for java.net.Socket.setTrafficClass(int)

public void setTrafficClass(int tc)
                     throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Sets traffic class or type-of-service octet in the IP header for packets sent from this Socket. As the underlying network implementation may ignore this value applications should consider it a hint.

The tc must be in the range 0 <= tc <= 255 or an IllegalArgumentException will be thrown.

Notes:

for Internet Protocol v4 the value consists of an octet with precedence and TOS fields as detailed in RFC 1349. The TOS field is bitset created by bitwise-or'ing values such the following :-

The last low order bit is always ignored as this corresponds to the MBZ (must be zero) bit.

Setting bits in the precedence field may result in a SocketException indicating that the operation is not permitted.

for Internet Protocol v6 tc is the value that would be placed into the sin6_flowinfo field of the IP header.

Parameters:
tc - an int value for the bitset.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error setting the traffic class or type-of-service
Since:
1.4
See Also:
getTrafficClass() sample code for java.net.Socket.getTrafficClass() definition code for java.net.Socket.getTrafficClass()

getTrafficClass sample code for java.net.Socket.getTrafficClass() definition code for java.net.Socket.getTrafficClass()

public int getTrafficClass()
                    throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Gets traffic class or type-of-service in the IP header for packets sent from this Socket

As the underlying network implementation may ignore the traffic class or type-of-service set using setTrafficClass(int) sample code for java.net.Socket.setTrafficClass(int) definition code for java.net.Socket.setTrafficClass(int) this method may return a different value than was previously set using the setTrafficClass(int) sample code for java.net.Socket.setTrafficClass(int) definition code for java.net.Socket.setTrafficClass(int) method on this Socket.

Returns:
the traffic class or type-of-service already set
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error obtaining the traffic class or type-of-service value.
Since:
1.4
See Also:
setTrafficClass(int) sample code for java.net.Socket.setTrafficClass(int) definition code for java.net.Socket.setTrafficClass(int)

setReuseAddress sample code for java.net.Socket.setReuseAddress(boolean) definition code for java.net.Socket.setReuseAddress(boolean)

public void setReuseAddress(boolean on)
                     throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Enable/disable the SO_REUSEADDR socket 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 (typically known as the TIME_WAIT state or 2MSL wait state). For applications using a well known socket address or port it may not be possible to bind a socket to the required SocketAddress if there is a connection in the timeout state involving the socket address or port.

Enabling SO_REUSEADDR prior to binding the socket using bind(SocketAddress) sample code for java.net.Socket.bind(java.net.SocketAddress) definition code for java.net.Socket.bind(java.net.SocketAddress) allows the socket to be bound even though a previous connection is in a timeout state.

When a Socket is created the initial setting of SO_REUSEADDR is disabled.

The behaviour when SO_REUSEADDR is enabled or disabled after a socket is bound (See isBound() sample code for java.net.Socket.isBound() definition code for java.net.Socket.isBound() ) is not defined.

Parameters:
on - whether to enable or disable the socket option
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if an error occurs enabling or disabling the SO_RESUEADDR socket option, or the socket is closed.
Since:
1.4
See Also:
getReuseAddress() sample code for java.net.Socket.getReuseAddress() definition code for java.net.Socket.getReuseAddress() , bind(SocketAddress) sample code for java.net.Socket.bind(java.net.SocketAddress) definition code for java.net.Socket.bind(java.net.SocketAddress) , isClosed() sample code for java.net.Socket.isClosed() definition code for java.net.Socket.isClosed() , isBound() sample code for java.net.Socket.isBound() definition code for java.net.Socket.isBound()

getReuseAddress sample code for java.net.Socket.getReuseAddress() definition code for java.net.Socket.getReuseAddress()

public boolean getReuseAddress()
                        throws SocketException sample code for java.net.SocketException definition code for java.net.SocketException 
Tests if SO_REUSEADDR is enabled.

Returns:
a boolean indicating whether or not SO_REUSEADDR is enabled.
Throws:
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if there is an error in the underlying protocol, such as a TCP error.
Since:
1.4
See Also:
setReuseAddress(boolean) sample code for java.net.Socket.setReuseAddress(boolean) definition code for java.net.Socket.setReuseAddress(boolean)

close sample code for java.net.Socket.close() definition code for java.net.Socket.close()

public void close()
           throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Closes this socket.

Any thread currently blocked in an I/O operation upon this socket will throw a SocketException sample code for java.net.SocketException definition code for java.net.SocketException .

Once a socket has been closed, it is not available for further networking use (i.e. can't be reconnected or rebound). A new socket needs to be created.

If this socket has an associated channel then the channel is closed as well.

Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when closing this socket.
See Also:
isClosed() sample code for java.net.Socket.isClosed() definition code for java.net.Socket.isClosed()

shutdownInput sample code for java.net.Socket.shutdownInput() definition code for java.net.Socket.shutdownInput()

public void shutdownInput()
                   throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Places the input stream for this socket at "end of stream". Any data sent to the input stream side of the socket is acknowledged and then silently discarded.

If you read from a socket input stream after invoking shutdownInput() on the socket, the stream will return EOF.

Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when shutting down this socket.
Since:
1.3
See Also:
shutdownOutput() sample code for java.net.Socket.shutdownOutput() definition code for java.net.Socket.shutdownOutput() , close() sample code for java.net.Socket.close() definition code for java.net.Socket.close() , setSoLinger(boolean, int) sample code for java.net.Socket.setSoLinger(boolean, int) definition code for java.net.Socket.setSoLinger(boolean, int) , isInputShutdown() sample code for java.net.Socket.isInputShutdown() definition code for java.net.Socket.isInputShutdown()

shutdownOutput sample code for java.net.Socket.shutdownOutput() definition code for java.net.Socket.shutdownOutput()

public void shutdownOutput()
                    throws IOException sample code for java.io.IOException definition code for java.io.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.

Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when shutting down this socket.
Since:
1.3
See Also:
shutdownInput() sample code for java.net.Socket.shutdownInput() definition code for java.net.Socket.shutdownInput() , close() sample code for java.net.Socket.close() definition code for java.net.Socket.close() , setSoLinger(boolean, int) sample code for java.net.Socket.setSoLinger(boolean, int) definition code for java.net.Socket.setSoLinger(boolean, int) , isOutputShutdown() sample code for java.net.Socket.isOutputShutdown() definition code for java.net.Socket.isOutputShutdown()

toString sample code for java.net.Socket.toString() definition code for java.net.Socket.toString()

public String sample code for java.lang.String definition code for java.lang.String  toString()
Converts this socket to a String.

Overrides:
toString sample code for java.lang.Object.toString() definition code for java.lang.Object.toString() in class Object sample code for java.lang.Object definition code for java.lang.Object
Returns:
a string representation of this socket.

isConnected sample code for java.net.Socket.isConnected() definition code for java.net.Socket.isConnected()

public boolean isConnected()
Returns the connection state of the socket.

Returns:
true if the socket successfuly connected to a server
Since:
1.4

isBound sample code for java.net.Socket.isBound() definition code for java.net.Socket.isBound()

public boolean isBound()
Returns the binding state of the socket.

Returns:
true if the socket successfuly bound to an address
Since:
1.4
See Also:
bind(java.net.SocketAddress) sample code for java.net.Socket.bind(java.net.SocketAddress) definition code for java.net.Socket.bind(java.net.SocketAddress)

isClosed sample code for java.net.Socket.isClosed() definition code for java.net.Socket.isClosed()

public boolean isClosed()
Returns the closed state of the socket.

Returns:
true if the socket has been closed
Since:
1.4
See Also:
close() sample code for java.net.Socket.close() definition code for java.net.Socket.close()

isInputShutdown sample code for java.net.Socket.isInputShutdown() definition code for java.net.Socket.isInputShutdown()

public boolean isInputShutdown()
Returns whether the read-half of the socket connection is closed.

Returns:
true if the input of the socket has been shutdown
Since:
1.4
See Also:
shutdownInput() sample code for java.net.Socket.shutdownInput() definition code for java.net.Socket.shutdownInput()

isOutputShutdown sample code for java.net.Socket.isOutputShutdown() definition code for java.net.Socket.isOutputShutdown()

public boolean isOutputShutdown()
Returns whether the write-half of the socket connection is closed.

Returns:
true if the output of the socket has been shutdown
Since:
1.4
See Also:
shutdownOutput() sample code for java.net.Socket.shutdownOutput() definition code for java.net.Socket.shutdownOutput()

setSocketImplFactory sample code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) definition code for java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory)

public static void setSocketImplFactory(SocketImplFactory sample code for java.net.SocketImplFactory definition code for java.net.SocketImplFactory  fac)
                                 throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Sets the client socket implementation factory for the application. The factory can be specified only once.

When an application creates a new client socket, the socket implementation factory's createSocketImpl method is called to create the actual socket implementation.

Passing null to the method is a no-op unless the factory was already set.

If there is a security manager, this method first calls the security manager's checkSetFactory method to ensure the operation is allowed. This could result in a SecurityException.

Parameters:
fac - the desired factory.
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if an I/O error occurs when setting the socket factory.
SocketException sample code for java.net.SocketException definition code for java.net.SocketException - if the factory is already defined.
SecurityException sample code for java.lang.SecurityException definition code for java.lang.SecurityException - if a security manager exists and its checkSetFactory method doesn't allow the operation.
See Also:
SocketImplFactory.createSocketImpl() sample code for java.net.SocketImplFactory.createSocketImpl() definition code for java.net.SocketImplFactory.createSocketImpl() , SecurityManager.checkSetFactory() sample code for java.lang.SecurityManager.checkSetFactory() definition code for java.lang.SecurityManager.checkSetFactory()

setPerformancePreferences sample code for java.net.Socket.setPerformancePreferences(int, int, int) definition code for java.net.Socket.setPerformancePreferences(int, int, int)

public void setPerformancePreferences(int connectionTime,
                                      int latency,
                                      int bandwidth)
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).

Invoking this method after this socket has been connected will have no effect.

Parameters:
connectionTime - An int expressing the relative importance of a short connection time
latency - An int expressing the relative importance of low latency
bandwidth - An int expressing the relative importance of high bandwidth
Since:
1.5