阅读(4494) (7)

鸿蒙OS SocketImpl

2022-06-06 16:31:58 更新

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