java.lang.Object java.net.SocketImpl
public abstract class SocketImpl
抽象类 SocketImpl
是实际实现套接字的所有类的通用超类。创建客户端和服务器套接字都可以使用它。
“普通”套接字严格按描述实现这些方法,无需尝试通过防火墙或代理。
字段摘要 | |
---|---|
protected InetAddress |
address 此套接字的远程端点的 IP 地址。 |
protected FileDescriptor |
fd 此套接字的文件描述符对象。 |
protected int |
localport 此套接字连接到的本地端口号。 |
protected int |
port 此套接字连接到的远程主机的端口号。 |
从接口 java.net.SocketOptions 继承的字段 |
---|
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 |
构造方法摘要 | |
---|---|
SocketImpl() |
方法摘要 | |
---|---|
protected abstract void |
accept(SocketImpl s) 接受连接。 |
protected abstract int |
available() 返回可以不受阻塞地从此套接字中读取的字节数。 |
protected abstract void |
bind(InetAddress host, int port) 将此套接字绑定到指定的本地 IP 地址和端口号。 |
protected abstract void |
close() 关闭此套接字。 |
protected abstract void |
connect(InetAddress address, int port) 将此套接字连接到指定主机上的指定端口号。 |
protected abstract void |
connect(SocketAddress address, int timeout) 将此套接字连接到指定主机上的指定端口号。 |
protected abstract void |
connect(String host, int port) 将此套接字连接到指定主机上的指定端口。 |
protected abstract void |
create(boolean stream) 创建一个流或数据报套接字。 |
protected FileDescriptor |
getFileDescriptor() 返回此套接字的 fd 字段的值。 |
protected InetAddress |
getInetAddress() 返回此套接字的 address 字段的值。 |
protected abstract InputStream |
getInputStream() 返回此套接字的输入流。 |
protected int |
getLocalPort() 返回此套接字的 localport 字段的值。 |
protected abstract OutputStream |
getOutputStream() 返回此套接字的输出流。 |
protected int |
getPort() 返回此套接字的 port 字段的值。 |
protected abstract void |
listen(int backlog) 将传入连接指示(连接请求)的最大队列长度设置为 count 参数。 |
protected abstract void |
sendUrgentData(int data) 在套接字上发送一个紧急数据字节。 |
protected void |
setPerformancePreferences(int connectionTime, int latency, int bandwidth) 设置此套接字的性能偏好 (performance preferences)。 |
protected void |
shutdownInput() 将此套接字的输入流置于“流的末尾”。 |
protected void |
shutdownOutput() 禁用此套接字的输出流。 |
protected boolean |
supportsUrgentData() 返回此 SocketImpl 是否支持发送紧急数据。 |
String |
toString() 以 String 的形式返回此套接字的地址和端口。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
从接口 java.net.SocketOptions 继承的方法 |
---|
getOption, setOption |
字段详细信息 |
---|
protected FileDescriptor fd
protected InetAddress address
protected int port
protected int localport
构造方法详细信息 |
---|
public SocketImpl()
方法详细信息 |
---|
protected abstract void create(boolean stream) throws IOException
stream
- 如果为
true
,则创建流套接字;否则创建数据报套接字。
IOException
- 如果创建套接字时发生 I/O 错误。
protected abstract void connect(String host, int port) throws IOException
host
- 远程主机名。
port
- 端口号。
IOException
- 如果连接到远程主机时发生 I/O 错误。
protected abstract void connect(InetAddress address, int port) throws IOException
address
- 远程主机的 IP 地址。
port
- 端口号。
IOException
- 如果尝试连接时发生 I/O 错误。
protected abstract void connect(SocketAddress address, int timeout) throws IOException
address
- 远程主机的 Socket 地址。
timeout
- 以毫秒为单位的超时值;或者为零,表示没有超时值。
IOException
- 如果尝试连接时发生 I/O 错误。
protected abstract void bind(InetAddress host, int port) throws IOException
host
- 属于本地接口的 IP 地址。
port
- 端口号。
IOException
- 如果绑定此套接字时发生 I/O 错误。
protected abstract void listen(int backlog) throws IOException
count
参数。如果队列满时收到连接指示,则拒绝该连接。
backlog
- 队列的最大长度。
IOException
- 如果创建队列时发生 I/O 错误。
protected abstract void accept(SocketImpl s) throws IOException
s
- 接受的连接。
IOException
- 如果接受连接时发生 I/O 错误。
protected abstract InputStream getInputStream() throws IOException
IOException
- 如果创建输入流时发生 I/O 错误。
protected abstract OutputStream getOutputStream() throws IOException
IOException
- 如果创建输出流时发生 I/O 错误。
protected abstract int available() throws IOException
IOException
- 如果确定可用字节数时发生 I/O 错误。
protected abstract void close() throws IOException
IOException
- 如果关闭此套接字时发生 I/O 错误。
protected void shutdownInput() throws IOException
IOException
- 如果关闭此套接字时发生 I/O 错误。
Socket.shutdownOutput()
,
Socket.close()
,
Socket.setSoLinger(boolean, int)
protected void shutdownOutput() throws IOException
IOException
- 如果关闭此套接字时发生 I/O 错误。
Socket.shutdownInput()
,
Socket.close()
,
Socket.setSoLinger(boolean, int)
protected FileDescriptor getFileDescriptor()
fd
字段的值。
fd
字段的值。
fd
protected InetAddress getInetAddress()
address
字段的值。
address
字段的值。
address
protected int getPort()
port
字段的值。
port
字段的值。
port
protected boolean supportsUrgentData()
address
protected abstract void sendUrgentData(int data) throws IOException
data
- 要发送的数据的字节
IOException
- 如果在发送数据时发生错误。
protected int getLocalPort()
localport
字段的值。
localport
字段的值。
localport
public String toString()
protected void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
默认情况下套接字使用 TCP/IP 协议。有些实现可能提供与 TCP/IP 具有不同性能特征的替换协议。此方法允许应用程序在实现从可用协议中作出选择时表达它自己关于应该如何进行折衷的偏好。
性能偏好由三个整数描述,它们的值分别指示短连接时间、低延迟和高带宽的相对重要性。这些整数的绝对值没有意义;为了选择协议,需要简单比较它们的值,较大的值指示更强的偏好。负值表示的优先级低于正值。例如,如果应用程序相对于低延迟和高带宽更偏好短连接时间,则其可以使用值 (1, 0, 0) 调用此方法。如果应用程序相对于低延迟更偏好高带宽,而相对于短连接时间更偏好低延迟,则其可以使用值 (0, 1, 2) 调用此方法。 默认情况下此方法不执行任何操作,除非在子类中重写该方法。
connectionTime
- 表达短连接时间的相对重要性的
int
latency
- 表达低延迟的相对重要性的
int
bandwidth
- 表达高带宽的相对重要性的
int