public class Socket extends Object
This class does not actually do any work. Instead, it redirects all of
its calls to a socket implementation object which implements the
SocketImpl
interface. The implementation class is
instantiated by factory class that implements the
SocketImplFactory interface
. A default
factory is provided, however the factory may be set by a call to
the setSocketImplFactory
method. Note that this may only be
done once per virtual machine. If a subsequent attempt is made to set the
factory, a SocketException
will be thrown.
Modifier | Constructor and Description |
---|---|
|
Socket()
Initializes a new instance of
Socket object without
connecting to a remote host. |
|
Socket(InetAddress address,
int port)
Initializes a new instance of
Socket and connects to the
address and port number specified as arguments. |
|
Socket(InetAddress host,
int port,
boolean stream)
Deprecated.
Use the
DatagramSocket class to create
datagram oriented sockets. |
|
Socket(InetAddress address,
int port,
InetAddress localAddr,
int localPort)
Initializes a new instance of
Socket and connects to the
address and port number specified as arguments, plus binds to the
specified local address and port. |
protected |
Socket(SocketImpl impl)
Initializes a new instance of
Socket object without
connecting to a remote host. |
|
Socket(String host,
int port)
Initializes a new instance of
Socket and connects to the
hostname and port specified as arguments. |
|
Socket(String host,
int port,
boolean stream)
Deprecated.
Use the
DatagramSocket class to create
datagram oriented sockets. |
|
Socket(String host,
int port,
InetAddress localAddr,
int localPort)
Initializes a new instance of
Socket that connects to the
named host on the specified port and binds to the specified local address
and port. |
Modifier and Type | Method and Description |
---|---|
void |
bind(SocketAddress bindpoint)
Binds the socket to the given local address/port
|
void |
close()
Closes the socket.
|
void |
connect(SocketAddress endpoint)
Connects the socket with a remote address.
|
void |
connect(SocketAddress endpoint,
int timeout)
Connects the socket with a remote address.
|
SocketChannel |
getChannel()
Returns the socket channel associated with this socket.
|
InetAddress |
getInetAddress()
Returns the address of the remote end of the socket.
|
InputStream |
getInputStream()
Returns an InputStream for reading from this socket.
|
boolean |
getKeepAlive()
This method returns the value of the socket level socket option
SO_KEEPALIVE.
|
InetAddress |
getLocalAddress()
Returns the local address to which this socket is bound.
|
int |
getLocalPort()
Returns the local port number to which this socket is bound.
|
SocketAddress |
getLocalSocketAddress()
Returns local socket address.
|
boolean |
getOOBInline()
Returns the current setting of the SO_OOBINLINE option for this socket
|
OutputStream |
getOutputStream()
Returns an OutputStream for writing to this socket.
|
int |
getPort()
Returns the port number of the remote end of the socket connection.
|
int |
getReceiveBufferSize()
This method returns the value of the system level socket option
SO_RCVBUF, which is used by the operating system to tune buffer
sizes for data transfers.
|
SocketAddress |
getRemoteSocketAddress()
Returns the remote socket address.
|
boolean |
getReuseAddress()
Checks if the SO_REUSEADDR option is enabled
|
int |
getSendBufferSize()
This method returns the value of the system level socket option
SO_SNDBUF, which is used by the operating system to tune buffer
sizes for data transfers.
|
int |
getSoLinger()
Returns the value of the SO_LINGER option on the socket.
|
int |
getSoTimeout()
Returns the value of the SO_TIMEOUT option on the socket.
|
boolean |
getTcpNoDelay()
Tests whether or not the TCP_NODELAY option is set on the socket.
|
int |
getTrafficClass()
Returns the current traffic class
|
boolean |
isBound()
Checks if the socket is already bound.
|
boolean |
isClosed()
Checks if the socket is closed.
|
boolean |
isConnected()
Checks if the socket is connected
|
boolean |
isInputShutdown()
Checks if the socket's input stream is shutdown
|
boolean |
isOutputShutdown()
Checks if the socket's output stream is shutdown
|
void |
sendUrgentData(int data)
Sends urgent data through the socket
|
void |
setKeepAlive(boolean on)
This method sets the value for the socket level socket option
SO_KEEPALIVE.
|
void |
setOOBInline(boolean on)
Enables/disables the SO_OOBINLINE option
|
void |
setReceiveBufferSize(int size)
This method sets the value for the system level socket option
SO_RCVBUF to the specified value.
|
void |
setReuseAddress(boolean reuseAddress)
Enables/Disables the SO_REUSEADDR option
|
void |
setSendBufferSize(int size)
This method sets the value for the system level socket option
SO_SNDBUF to the specified value.
|
static void |
setSocketImplFactory(SocketImplFactory fac)
Sets the
SocketImplFactory . |
void |
setSoLinger(boolean on,
int linger)
Sets the value of the SO_LINGER option on the socket.
|
void |
setSoTimeout(int timeout)
Sets the value of the SO_TIMEOUT option on the socket.
|
void |
setTcpNoDelay(boolean on)
Sets the TCP_NODELAY option on the socket.
|
void |
setTrafficClass(int tc)
Sets the traffic class value
|
void |
shutdownInput()
Closes the input side of the socket stream.
|
void |
shutdownOutput()
Closes the output side of the socket stream.
|
String |
toString()
Converts this
Socket to a String . |
public Socket()
Socket
object without
connecting to a remote host. This useful for subclasses of socket that
might want this behavior.protected Socket(SocketImpl impl) throws SocketException
Socket
object without
connecting to a remote host. This is useful for subclasses of socket
that might want this behavior.
Additionally, this socket will be created using the supplied
implementation class instead the default class or one returned by a
factory. If this value is null
, the default Socket
implementation is used.
impl
- The SocketImpl
to use for this
Socket
SocketException
- If an error occurspublic Socket(String host, int port) throws UnknownHostException, IOException
Socket
and connects to the
hostname and port specified as arguments.host
- The name of the host to connect toport
- The port number to connect toUnknownHostException
- If the hostname cannot be resolved to a
network address.IOException
- If an error occursSecurityException
- If a security manager exists and its
checkConnect method doesn't allow the operationpublic Socket(InetAddress address, int port) throws IOException
Socket
and connects to the
address and port number specified as arguments.address
- The address to connect toport
- The port number to connect toIOException
- If an error occursSecurityException
- If a security manager exists and its
checkConnect method doesn't allow the operationpublic Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException
Socket
that connects to the
named host on the specified port and binds to the specified local address
and port.host
- The name of the remote host to connect to.port
- The remote port to connect to.localAddr
- The local address to bind to.localPort
- The local port to bind to.SecurityException
- If the SecurityManager
exists and does not allow a connection to the specified host/port or
binding to the specified local host/port.IOException
- If a connection error occurs.public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException
Socket
and connects to the
address and port number specified as arguments, plus binds to the
specified local address and port.address
- The remote address to connect toport
- The remote port to connect tolocalAddr
- The local address to connect tolocalPort
- The local port to connect toIOException
- If an error occursSecurityException
- If a security manager exists and its
checkConnect method doesn't allow the operationpublic Socket(String host, int port, boolean stream) throws IOException
DatagramSocket
class to create
datagram oriented sockets.Socket
and connects to the
hostname and port specified as arguments. If the stream argument is set
to true
, then a stream socket is created. If it is
false
, a datagram socket is created.host
- The name of the host to connect toport
- The port to connect tostream
- true
for a stream socket, false
for a datagram socketIOException
- If an error occursSecurityException
- If a security manager exists and its
checkConnect method doesn't allow the operationpublic Socket(InetAddress host, int port, boolean stream) throws IOException
DatagramSocket
class to create
datagram oriented sockets.Socket
and connects to the
address and port number specified as arguments. If the stream param is
true
, a stream socket will be created, otherwise a datagram
socket is created.host
- The address to connect toport
- The port number to connect tostream
- true
to create a stream socket,
false
to create a datagram socket.IOException
- If an error occursSecurityException
- If a security manager exists and its
checkConnect method doesn't allow the operationpublic void bind(SocketAddress bindpoint) throws IOException
bindpoint
- The address/port to bind toIOException
- If an error occursSecurityException
- If a security manager exists and its
checkConnect method doesn't allow the operationIllegalArgumentException
- If the address type is not supportedpublic void connect(SocketAddress endpoint) throws IOException
endpoint
- The address to connect toIOException
- If an error occursIllegalArgumentException
- If the addess type is not supportedIllegalBlockingModeException
- If this socket has an associated
channel, and the channel is in non-blocking modepublic void connect(SocketAddress endpoint, int timeout) throws IOException
endpoint
- The address to connect totimeout
- The length of the timeout in milliseconds, or
0 to indicate no timeout.IOException
- If an error occursIllegalArgumentException
- If the address type is not supportedIllegalBlockingModeException
- If this socket has an associated
channel, and the channel is in non-blocking modeSocketTimeoutException
- If the timeout is reachedSecurityException
- if the SocketAddress is an InetSocketAddress
and a security manager is present which does not
allow connections on the given host and port.public InetAddress getInetAddress()
null
is returned.public InetAddress getLocalAddress()
is true
, is returned.
public int getPort()
public int getLocalPort()
public SocketAddress getLocalSocketAddress()
public SocketAddress getRemoteSocketAddress()
public InputStream getInputStream() throws IOException
IOException
- If an error occurs or Socket is not connectedpublic OutputStream getOutputStream() throws IOException
IOException
- If an error occurs or Socket is not connectedpublic void setTcpNoDelay(boolean on) throws SocketException
on
- true to enable, false to disableSocketException
- If an error occurs or Socket is not connectedpublic boolean getTcpNoDelay() throws SocketException
SocketException
- If an error occurs or Socket not connectedpublic void setSoLinger(boolean on, int linger) throws SocketException
on
- true to enable SO_LINGER, false to disablelinger
- The SO_LINGER timeout in hundreths of a second or -1 if
SO_LINGER not set.SocketException
- If an error occurs or Socket not connectedIllegalArgumentException
- If linger is negativepublic int getSoLinger() throws SocketException
SocketException
- If an error occurs or Socket is not connectedpublic void sendUrgentData(int data) throws IOException
data
- The data to send.
Only the lowest eight bits of data are sentIOException
- If an error occurspublic void setOOBInline(boolean on) throws SocketException
on
- True if SO_OOBLINE should be enabledSocketException
- If an error occurspublic boolean getOOBInline() throws SocketException
SocketException
- If an error occurspublic void setSoTimeout(int timeout) throws SocketException
timeout
- The length of the timeout in milliseconds, or
0 to indicate no timeout.SocketException
- If an error occurs or Socket not connectedpublic int getSoTimeout() throws SocketException
SocketException
- If an error occurs or Socket not connectedpublic void setSendBufferSize(int size) throws SocketException
size
- The new send buffer size.SocketException
- If an error occurs or Socket not connectedIllegalArgumentException
- If size is 0 or negativepublic int getSendBufferSize() throws SocketException
SocketException
- If an error occurs or socket not connectedpublic void setReceiveBufferSize(int size) throws SocketException
size
- The new receive buffer size.SocketException
- If an error occurs or Socket is not connectedIllegalArgumentException
- If size is 0 or negativepublic int getReceiveBufferSize() throws SocketException
SocketException
- If an error occurs or Socket is not connectedpublic void setKeepAlive(boolean on) throws SocketException
on
- True if SO_KEEPALIVE should be enabledSocketException
- If an error occurs or Socket is not connectedpublic boolean getKeepAlive() throws SocketException
SocketException
- If an error occurs or Socket is not connectedpublic void close() throws IOException
IOException
- If an error occurspublic String toString()
Socket
to a String
.toString
in class Object
String
representation of this Socket
Object.getClass()
,
Object.hashCode()
,
Class.getName()
,
Integer.toHexString(int)
public static void setSocketImplFactory(SocketImplFactory fac) throws IOException
SocketImplFactory
. This may be done only once per
virtual machine. Subsequent attempts will generate a
SocketException
. Note that a SecurityManager
check is made prior to setting the factory. If
insufficient privileges exist to set the factory, then an
IOException
will be thrown.fac
- the factory to setSecurityException
- If the SecurityManager
does
not allow this operation.SocketException
- If the SocketImplFactory is already definedIOException
- If any other error occurspublic void shutdownInput() throws IOException
IOException
- If an error occurs.public void shutdownOutput() throws IOException
IOException
- If an error occurs.public SocketChannel getChannel()
public boolean getReuseAddress() throws SocketException
SocketException
- If an error occurspublic void setReuseAddress(boolean reuseAddress) throws SocketException
reuseAddress
- true if SO_REUSEADDR should be enabled,
false otherwiseSocketException
- If an error occurspublic int getTrafficClass() throws SocketException
SocketException
- If an error occurssetTrafficClass(int tc)
public void setTrafficClass(int tc) throws SocketException
tc
- The traffic classSocketException
- If an error occursIllegalArgumentException
- If tc value is illegalgetTrafficClass()
public boolean isConnected()
public boolean isBound()
public boolean isClosed()
public boolean isInputShutdown()
public boolean isOutputShutdown()