java.lang.Object
java.net.SocketImpl
- 所有已实现的接口:
-
SocketOptions
抽象类
SocketImpl
是所有实际实现套接字的类的通用超类。它用于创建客户端套接字和服务器套接字。
- 自:
- 1.0
-
Field Summary
Modifier and TypeFieldDescriptionprotected InetAddress
此套接字远端的IP地址。protected FileDescriptor
此套接字的文件描述符对象。protected int
此套接字连接的本地端口号。protected int
此套接字连接的远程主机上的端口号。Fields declared in interface 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_REUSEPORT, SO_SNDBUF, SO_TIMEOUT, TCP_NODELAY
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
accept
(SocketImpl s) 接受连接。protected abstract int
返回可以从此套接字读取而不阻塞的字节数。protected abstract void
bind
(InetAddress host, int port) 将此套接字绑定到指定的本地IP地址和端口号。protected abstract void
close()
关闭此套接字。protected abstract void
将此套接字连接到指定主机上的指定端口。protected abstract void
connect
(InetAddress address, int port) 将此套接字连接到指定主机上的指定端口号。protected abstract void
connect
(SocketAddress address, int timeout) 将此套接字连接到指定主机上的指定端口号。protected abstract void
create
(boolean stream) 创建流套接字或数据报套接字。protected FileDescriptor
返回此套接字的fd
字段的值。protected InetAddress
返回此套接字的address
字段的值。protected abstract InputStream
返回此套接字的输入流。protected int
返回此套接字的localport
字段的值。protected <T> T
getOption
(SocketOption<T> name) 用于获取套接字选项。protected abstract OutputStream
返回此套接字的输出流。protected int
getPort()
返回此套接字的port
字段的值。protected abstract void
listen
(int backlog) 将传入连接指示的最大队列长度(连接请求)设置为count
参数。protected abstract void
sendUrgentData
(int data) 在套接字上发送一个字节的紧急数据。protected <T> void
setOption
(SocketOption<T> name, T value) 用于设置套接字选项。protected void
setPerformancePreferences
(int connectionTime, int latency, int bandwidth) 为此套接字设置性能首选项。protected void
将此套接字的输入流置于“流的末尾”。protected void
禁用此套接字的输出流。protected Set
<SocketOption<?>> 返回此实现和此实现的套接字(Socket或ServerSocket)支持的SocketOptions集合。protected boolean
返回此SocketImpl是否支持发送紧急数据。toString()
返回此套接字的地址和端口作为String
。Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods declared in interface java.net.SocketOptions
getOption, setOption
-
Field Details
-
fd
此套接字的文件描述符对象。 -
address
此套接字远端的IP地址。 -
port
protected int port此套接字连接的远程主机上的端口号。 -
localport
protected int localport此套接字连接的本地端口号。
-
-
Constructor Details
-
SocketImpl
public SocketImpl()初始化此类的新实例
-
-
Method Details
-
create
创建流套接字或数据报套接字。- 参数:
-
stream
- 如果为true
,则创建流套接字;否则创建数据报套接字。 - 抛出:
-
IOException
- 如果创建套接字时发生I/O错误。
-
connect
将此套接字连接到指定主机上的指定端口。- 参数:
-
host
- 远程主机的名称。 -
port
- 端口号。 - 抛出:
-
IOException
- 如果连接到远程主机时发生I/O错误。
-
connect
将此套接字连接到指定主机上的指定端口号。- 参数:
-
address
- 远程主机的IP地址。 -
port
- 端口号。 - 抛出:
-
IOException
- 如果尝试连接时发生I/O错误。
-
connect
将此套接字连接到指定主机上的指定端口号。超时值为零被解释为无限超时。然后连接将阻塞直到建立或发生错误。- 参数:
-
address
- 远程主机的套接字地址。 -
timeout
- 超时值,以毫秒为单位,如果为零则表示无超时。 - 抛出:
-
IOException
- 如果尝试连接时发生I/O错误。 - 自:
- 1.4
-
bind
将此套接字绑定到指定的本地IP地址和端口号。- 参数:
-
host
- 属于本地接口的IP地址。 -
port
- 端口号。 - 抛出:
-
IOException
- 如果绑定此套接字时发生I/O错误。
-
listen
将传入连接指示的最大队列长度(连接请求)设置为count
参数。如果队列已满而有连接指示到达,则拒绝连接。- 参数:
-
backlog
- 队列的最大长度。 - 抛出:
-
IOException
- 如果创建队列时发生I/O错误。
-
accept
接受连接。- 参数:
-
s
- 接受的连接。 - 抛出:
-
IOException
- 如果接受连接时发生I/O错误。
-
getInputStream
返回此套接字的输入流。- 返回:
- 用于从此套接字读取的流。
- 抛出:
-
IOException
- 如果创建输入流时发生I/O错误。
-
getOutputStream
返回此套接字的输出流。- 返回:
- 用于向此套接字写入的输出流。
- 抛出:
-
IOException
- 如果创建输出流时发生I/O错误。
-
available
返回可以从此套接字读取而不阻塞的字节数。- 返回:
- 可以从此套接字读取而不阻塞的字节数。
- 抛出:
-
IOException
- 如果确定可用字节数时发生I/O错误。
-
close
关闭此套接字。- 抛出:
-
IOException
- 如果关闭此套接字时发生I/O错误。
-
shutdownInput
将此套接字的输入流置于“流的末尾”。发送到此套接字的任何数据都将被确认,然后被静默丢弃。如果在调用此方法后从套接字输入流读取,流的available
方法将返回0,其read
方法将返回-1
(流的末尾)。- 抛出:
-
IOException
- 如果关闭此套接字时发生I/O错误。 - 自:
- 1.3
- 参见:
-
shutdownOutput
禁用此套接字的输出流。对于TCP套接字,将发送任何先前写入的数据,然后是TCP的正常连接终止序列。如果在套接字上调用shutdownOutput()后向套接字输出流写入数据,该流将抛出IOException。- 抛出:
-
IOException
- 如果关闭此套接字时发生I/O错误。 - 自:
- 1.3
- 参见:
-
getFileDescriptor
返回此套接字的fd
字段的值。- 返回:
-
此套接字的
fd
字段的值。 - 参见:
-
getInetAddress
返回此套接字的address
字段的值。- 返回:
-
此套接字的
address
字段的值。 - 参见:
-
getPort
protected int getPort()返回此套接字的port
字段的值。- 返回:
-
此套接字的
port
字段的值。 - 参见:
-
supportsUrgentData
protected boolean supportsUrgentData()返回此SocketImpl是否支持发送紧急数据。默认情况下,除非在子类中重写该方法,否则返回false。- 返回:
- 如果支持紧急数据,则为true
- 自:
- 1.4
- 参见:
-
sendUrgentData
在套接字上发送一个字节的紧急数据。要发送的字节是参数的低八位。- 参数:
-
data
- 要发送的数据字节 - 抛出:
-
IOException
- 如果发送数据时出现错误。 - 自版本:
- 1.4
-
getLocalPort
protected int getLocalPort()返回此套接字的localport
字段的值。- 返回:
-
此套接字的
localport
字段的值。 - 参见:
-
toString
返回此套接字的地址和端口作为String
。 -
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
- 自版本:
- 1.5
-
setOption
用于设置套接字选项。- 实现要求:
-
此方法的默认实现首先检查给定的套接字选项
name
不为null,然后抛出UnsupportedOperationException
。子类应该用适当的实现覆盖此方法。 - 类型参数:
-
T
- 套接字选项值的类型 - 参数:
-
name
- 套接字选项 -
value
- 套接字选项的值。对于某些选项,值为null
可能有效。 - 抛出:
-
UnsupportedOperationException
- 如果SocketImpl不支持该选项 -
IllegalArgumentException
- 如果值对于该选项无效 -
IOException
- 如果发生I/O错误,或者套接字已关闭 -
NullPointerException
- 如果name为null
- 自版本:
- 9
-
getOption
用于获取套接字选项。- 实现要求:
-
此方法的默认实现首先检查给定的套接字选项
name
不为null,然后抛出UnsupportedOperationException
。子类应该用适当的实现覆盖此方法。 - 类型参数:
-
T
- 套接字选项值的类型 - 参数:
-
name
- 套接字选项 - 返回:
- 命名选项的值
- 抛出:
-
UnsupportedOperationException
- 如果SocketImpl不支持该选项 -
IOException
- 如果发生I/O错误,或者套接字已关闭 -
NullPointerException
- 如果name为null
- 自版本:
- 9
-
supportedOptions
返回此实现和此实现的套接字(Socket或ServerSocket)支持的一组SocketOptions- 实现要求:
- 此方法的默认实现返回一个空集。子类应该用适当的实现覆盖此方法。
- 返回:
- 一组SocketOptions
- 自版本:
- 9
-