java.lang.Object | +--java.net.SocketImpl | +--java.net.PlainSocketImpl
Default Socket Implementation. This implementation does not implement any security checks. Note this class should NOT be public.
IP_MULTICAST_IF, IP_MULTICAST_IF2, IP_MULTICAST_LOOP, IP_TOS, SO_BINDADDR, SO_BROADCAST, SO_KEEPALIVE, SO_LINGER, SO_OOBINLINE, SO_RCVBUF, SO_REUSEADDR, SO_SNDBUF, SO_TIMEOUT, TCP_NODELAY
(package private)
PlainSocketImpl(FileDescriptor fd)
protected void
bind(InetAddress address,
int lport)
protected void
connect(InetAddress address,
int port)
protected void
connect(SocketAddress address,
int timeout)
protected void
connect(String host,
int port)
protected void
create(boolean stream)
private void
doConnect(InetAddress address,
int port,
int timeout)
protected boolean
supportsUrgentData()
getFileDescriptor, getInetAddress, getLocalPort, getPort, getServerSocket, getSocket, reset, setServerSocket, setSocket, toString
int timeout
private int trafficClass
private boolean shut_rd
private boolean shut_wr
private SocketInputStream socketInputStream
private int fdUseCount
private Object fdLock
private boolean closePending
private int CONNECTION_NOT_RESET
private int CONNECTION_RESET_PENDING
private int CONNECTION_RESET
private int resetState
private Object resetLock
public static final int SHUT_RD
public static final int SHUT_WR
PlainSocketImpl()
PlainSocketImpl(FileDescriptor fd)
protected void create(boolean stream) throws IOException
create
in class SocketImpl
stream
- if true
, create a stream socket;
otherwise, create a datagram socket.
IOException
protected void connect(String host, int port) throws UnknownHostException, IOException
connect
in class SocketImpl
host
- the specified hostport
- the specified port
UnknownHostException
IOException
protected void connect(InetAddress address, int port) throws IOException
connect
in class SocketImpl
address
- the addressport
- the specified port
IOException
protected void connect(SocketAddress address, int timeout) throws IOException
connect
in class SocketImpl
address
- the addresstimeout
- the timeout value in milliseconds, or zero for no timeout.
IOException
- if connection fails
IllegalArgumentException
- if address is null or is a
SocketAddress subclass not supported by this socketprivate void connectToAddress(InetAddress address, int port, int timeout) throws IOException
public void setOption(int opt, Object val) throws SocketException
SocketOptions
SocketImpl s; ... s.setOption(SO_LINGER, new Integer(10)); // OK - set SO_LINGER w/ timeout of 10 sec. s.setOption(SO_LINGER, new Double(10)); // ERROR - expects java.lang.IntegerIf the requested option is binary, it can be set using this method by a java.lang.Boolean:
s.setOption(TCP_NODELAY, new Boolean(true)); // OK - enables TCP_NODELAY, a binary option
s.setOption(TCP_NODELAY, new Boolean(false)); // OK - disables TCP_NODELAY s.setOption(SO_LINGER, new Boolean(false)); // OK - disables SO_LINGER
opt
- identifies the optionval
- the parameter of the socket option
SocketException
- if the option is unrecognized,
the socket is closed, or some low-level error occurredSocketOptions.getOption(int)
public Object getOption(int opt) throws SocketException
SocketOptions
SocketImpl s; ... Boolean noDelay = (Boolean)(s.getOption(TCP_NODELAY)); if (noDelay.booleanValue()) { // true if TCP_NODELAY is enabled... ... }
For options that take a particular type as a parameter, getOption(int) will return the paramter's value, else it will return java.lang.Boolean(false):
Object o = s.getOption(SO_LINGER); if (o instanceof Integer) { System.out.print("Linger time is " + ((Integer)o).intValue()); } else { // the true type of o is java.lang.Boolean(false); }
opt
- an int
identifying the option to fetch
SocketException
- if the socket is closedSocketOptions.setOption(int, java.lang.Object)
private void doConnect(InetAddress address, int port, int timeout) throws IOException
protected void bind(InetAddress address, int lport) throws IOException
bind
in class SocketImpl
address
- the addresslport
- the port number.
IOException
protected void listen(int count) throws IOException
listen
in class SocketImpl
count
- the amount of time to listen for connections
IOException
protected void accept(SocketImpl s) throws IOException
accept
in class SocketImpl
s
- the connection
IOException
protected InputStream getInputStream() throws IOException
getInputStream
in class SocketImpl
IOException
void setInputStream(SocketInputStream in)
protected OutputStream getOutputStream() throws IOException
getOutputStream
in class SocketImpl
IOException
protected int available() throws IOException
available
in class SocketImpl
IOException
protected void close() throws IOException
close
in class SocketImpl
protected void shutdownInput() throws IOException
shutdownInput
in class SocketImpl
IOException
java.net.Socket#shutdownOutput()
,
java.net.Socket#close()
,
java.net.Socket#setSoLinger(boolean, int)
protected void shutdownOutput() throws IOException
shutdownOutput
in class SocketImpl
IOException
java.net.Socket#shutdownInput()
,
java.net.Socket#close()
,
java.net.Socket#setSoLinger(boolean, int)
protected boolean supportsUrgentData()
SocketImpl
supportsUrgentData
in class SocketImpl
java.net.SocketImpl#address
protected void sendUrgentData(int data) throws IOException
SocketImpl
sendUrgentData
in class SocketImpl
data
- The byte of data to send
IOException
protected void finalize() throws IOException
public final FileDescriptor acquireFD()
public final void releaseFD()
public boolean isConnectionReset()
public boolean isConnectionResetPending()
public void setConnectionReset()
public void setConnectionResetPending()
public boolean isClosedOrPending()
public int getTimeout()
private void socketCreate(boolean isServer) throws IOException
private void socketConnect(InetAddress address, int port, int timeout) throws IOException
private void socketBind(InetAddress address, int port) throws IOException
private void socketListen(int count) throws IOException
private void socketAccept(SocketImpl s) throws IOException
private int socketAvailable() throws IOException
private void socketClose0(boolean useDeferredClose) throws IOException
private void socketShutdown(int howto) throws IOException
private static void initProto()
private void socketSetOption(int cmd, boolean on, Object value) throws SocketException
private int socketGetOption(int opt, Object iaContainerObj) throws SocketException
private void socketSendUrgentData(int data) throws IOException