SocketImpl
java.lang.Object
|—java.net.SocketImpl
public abstract class SocketImpl
extends Object
implements SocketOptions
抽象类 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(String host, int port) | 将此套接字连接到指定主机上的指定端口。 |
protected abstract void | connect(InetAddress address, int port) | 将此套接字连接到指定主机上的指定端口号。 |
protected abstract void | connect(SocketAddress address, int timeout) | 将此套接字连接到指定主机上的指定端口号。 |
protected abstract void | create(boolean stream) | 创建流或数据报套接字。 |
protected FileDescriptor | getFileDescriptor() | 返回此套接字的 fd 字段的值。 |
protected InetAddress | getInetAddress() | 返回此套接字的地址字段的值。 |
protected abstract InputStream | getInputStream() | 返回此套接字的输入流。 |
protected int | getLocalPort() | 返回此套接字的 localport 字段的值。 |
protected abstract OutputStream | getOutputStream() | 返回此套接字的输出流。 |
protected int | getPort() | 返回此套接字的端口字段的值。 |
protected abstract void | listen(int backlog) | 将传入连接指示(连接请求)的最大队列长度设置为 count 参数。 |
protected abstract void | sendUrgentData(int data) | 在套接字上发送一个字节的紧急数据。 |
protected void | setPerformancePreferences(int connectionTime, int latency, int bandwidth) | 设置此套接字的性能首选项。 |
protected void | shutdownInput() | 将此套接字的输入流放在“流的末尾”。 |
protected void | shutdownOutput() | 禁用此套接字的输出流。 |
protected boolean | supportsUrgentData() | 返回此 SocketImpl 是否支持发送紧急数据。 |
String | toString() | 将此套接字的地址和端口作为字符串返回。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
从接口 java.net.SocketOptions 继承的方法 |
---|
getOption, setOption |
字段详细信息
address
protected InetAddress address
此套接字的远程端的 IP 地址。
fd
protected FileDescriptor fd
此套接字的文件描述符对象。
localport
protected int localport
此套接字连接到的本地端口号。
port
protected int port
此套接字连接到的远程主机上的端口号。
构造函数详细信息
SocketImpl
public SocketImpl()
方法详情
create
protected abstract void create(boolean stream) throws IOException
创建流或数据报套接字。
参数:
参数名称 | 参数描述 |
---|---|
stream | 如果为true,则创建一个流套接字; 否则,创建一个数据报套接字。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在创建套接字时发生 I/O 错误。 |
connect
protected abstract void connect(String host, int port) throws IOException
将此套接字连接到指定主机上的指定端口。
参数:
参数名称 | 参数描述 |
---|---|
host | 远程主机的名称。 |
port | 端口号。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果连接到远程主机时发生 I/O 错误。 |
connect
protected abstract void connect(InetAddress address, int port) throws IOException
将此套接字连接到指定主机上的指定端口号。
参数:
参数名称 | 参数描述 |
---|---|
address | 远程主机的 IP 地址。 |
port | 端口号。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果尝试连接时发生 I/O 错误。 |
connect
protected abstract void connect(SocketAddress address, int timeout) throws IOException
将此套接字连接到指定主机上的指定端口号。 超时为零被解释为无限超时。 然后连接将阻塞,直到建立或发生错误。
参数:
参数名称 | 参数描述 |
---|---|
address | 远程主机的 Socket 地址。 |
timeout | 超时值,以毫秒为单位,或者为零表示没有超时。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果尝试连接时发生 I/O 错误。 |
bind
protected abstract void bind(InetAddress host, int port) throws IOException
将此套接字绑定到指定的本地 IP 地址和端口号。
参数:
参数名称 | 参数描述 |
---|---|
host | 属于本地接口的 IP 地址。 |
port | 端口号。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果绑定此套接字时发生 I/O 错误。 |
listen
protected abstract void listen(int backlog) throws IOException
将传入连接指示(连接请求)的最大队列长度设置为 count 参数。 如果队列已满时连接指示到达,则拒绝连接。
参数:
参数名称 | 参数描述 |
---|---|
backlog | 队列的最大长度。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在创建队列时发生 I/O 错误。 |
accept
protected abstract void accept(SocketImpl s) throws IOException
接受连接。
参数:
参数名称 | 参数描述 |
---|---|
s | 接受的连接。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在接受连接时发生 I/O 错误。 |
getInputStream
protected abstract InputStream getInputStream() throws IOException
返回此套接字的输入流。
返回:
用于从此套接字读取的流。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在创建输入流时发生 I/O 错误。 |
getOutputStream
protected abstract OutputStream getOutputStream() throws IOException
返回此套接字的输出流。
返回:
用于写入此套接字的输出流。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在创建输出流时发生 I/O 错误。 |
available
protected abstract int available() throws IOException
返回可以不阻塞地从此套接字读取的字节数。
返回:
可以不阻塞地从此套接字读取的字节数。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在确定可用字节数时发生 I/O 错误。 |
close
protected abstract void close() throws IOException
关闭此套接字。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果关闭此套接字时发生 I/O 错误。 |
shutdownInput
protected void shutdownInput() throws IOException
将此套接字的输入流放在“流的末尾”。 发送到此套接字的任何数据都会得到确认,然后被静默丢弃。 如果在套接字上调用此方法后从套接字输入流中读取,则流的可用方法将返回 0,其读取方法将返回 -1(流结束)。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果关闭此套接字时发生 I/O 错误。 |
shutdownOutput
protected void shutdownOutput() throws IOException
禁用此套接字的输出流。 对于 TCP 套接字,任何先前写入的数据都将按照 TCP 的正常连接终止顺序发送。 如果在套接字上调用 shutdownOutput() 后写入套接字输出流,则该流将引发 IOException。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果关闭此套接字时发生 I/O 错误。 |
getFileDescriptor
protected FileDescriptor getFileDescriptor()
返回此套接字的 fd 字段的值。
返回:
此套接字的 fd 字段的值。
getInetAddress
protected InetAddress getInetAddress()
返回此套接字的地址字段的值。
返回:
此套接字的地址字段的值。
getPort
protected int getPort()
返回此套接字的端口字段的值。
返回:
此套接字的端口字段的值。
supportsUrgentData
protected boolean supportsUrgentData()
返回此 SocketImpl 是否支持发送紧急数据。 默认情况下,除非在子类中重写该方法,否则返回 false
返回:
如果支持紧急数据,则为true
sendUrgentData
protected abstract void sendUrgentData(int data) throws IOException
在套接字上发送一个字节的紧急数据。 要发送的字节是参数的低八位
参数:
参数名称 | 参数描述 |
---|---|
data | 要发送的数据字节 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发送数据时出错。 |
getLocalPort
protected int getLocalPort()
返回此套接字的 localport 字段的值。
返回:
此套接字的 localport 字段的值。
toString
public String toString()
将此套接字的地址和端口作为字符串返回。
覆盖:
类 Object 中的 toString
返回:
此套接字的字符串表示形式。
setPerformancePreferences
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 |