- java.lang.Object
-
- java.net.SocketImpl
-
- All Implemented Interfaces:
-
SocketOptions
public abstract class SocketImpl extends Object implements SocketOptions
抽象类SocketImpl
是实际实现套接字的所有类的公共超类。 它用于创建客户端和服务器套接字。“plain”套接字完全按照所描述的方式实现这些方法,而不尝试通过防火墙或代理。
- 从以下版本开始:
- 1.0
-
-
Field Summary
Fields Modifier and Type Field 描述 protected InetAddress
address
该套接字远端的IP地址。protected FileDescriptor
fd
该套接字的文件描述符对象。protected int
localport
此套接字连接到的本地端口号。protected int
port
此套接字连接到的远程主机上的端口号。-
Fields inherited from 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 描述 SocketImpl()
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 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()
返回此套接字address
字段的值。protected abstract InputStream
getInputStream()
返回此套接字的输入流。protected int
getLocalPort()
返回此套接字localport
字段的值。protected <T> T
getOption(SocketOption<T> name)
被称为获取套接字选项。protected abstract OutputStream
getOutputStream()
返回此套接字的输出流。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
shutdownInput()
将此套接字的输入流放置在“流的末尾”。protected void
shutdownOutput()
禁用此套接字的输出流。protected Set<SocketOption<?>>
supportedOptions()
返回一个由此impl和该impl的套接字支持的SocketOptions(Socket或ServerSocket)protected boolean
supportsUrgentData()
返回SocketImpl是否支持发送紧急数据。String
toString()
将此套接字的地址和端口作为String
。-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.net.SocketOptions
getOption, setOption
-
-
-
-
字段详细信息
-
fd
protected FileDescriptor fd
该套接字的文件描述符对象。
-
address
protected InetAddress address
该套接字远端的IP地址。
-
port
protected int port
此套接字连接到的远程主机上的端口号。
-
localport
protected int localport
此套接字连接到的本地端口号。
-
-
方法详细信息
-
create
protected abstract void create(boolean stream) throws IOException
创建流或数据报套接字。- 参数
-
stream
- 如果是true
,创建一个流套接字; 否则,创建一个数据报套接字。 - 异常
-
IOException
- 如果在创建套接字时发生I / O错误。
-
connect
protected abstract void connect(String host, int port) throws IOException
将此套接字连接到指定主机上的指定端口。- 参数
-
host
- 远程主机的名称。 -
port
- 端口号。 - 异常
-
IOException
- 如果连接到远程主机时发生I / O错误。
-
connect
protected abstract void connect(InetAddress address, int port) throws IOException
将此套接字连接到指定主机上的指定端口号。- 参数
-
address
- 远程主机的IP地址。 -
port
- 端口号。 - 异常
-
IOException
- 如果尝试连接时发生I / O错误。
-
connect
protected abstract void connect(SocketAddress address, int timeout) throws IOException
将此套接字连接到指定主机上的指定端口号。 超时为零被解释为无限超时。 然后,连接将阻塞,直到建立或发生错误。- 参数
-
address
- 远程主机的Socket地址。 -
timeout
- 无超时的超时值(以毫秒为单位)或零。 - 异常
-
IOException
- 如果尝试连接时发生I / O错误。 - 从以下版本开始:
- 1.4
-
bind
protected abstract void bind(InetAddress host, int port) throws IOException
将此套接字绑定到指定的本地IP地址和端口号。- 参数
-
host
- 属于本地接口的IP地址。 -
port
- 端口号。 - 异常
-
IOException
- 如果绑定此套接字时发生I / O错误。
-
listen
protected abstract void listen(int backlog) throws IOException
将传入连接指示(请求连接)的最大队列长度设置为count
参数。 如果连接指示在队列已满时到达,则连接被拒绝。- 参数
-
backlog
- 队列的最大长度。 - 异常
-
IOException
- 如果在创建队列时发生I / O错误。
-
accept
protected abstract void accept(SocketImpl s) throws IOException
接受连接。- 参数
-
s
- 接受的连接。 - 异常
-
IOException
- 如果接受连接时发生I / O错误。
-
getInputStream
protected abstract InputStream getInputStream() throws IOException
返回此套接字的输入流。- 结果
- 从该套接字读取的流。
- 异常
-
IOException
- 创建输入流时是否发生I / O错误。
-
getOutputStream
protected abstract OutputStream getOutputStream() throws IOException
返回此套接字的输出流。- 结果
- 用于写入此插座的输出流。
- 异常
-
IOException
- 创建输出流时是否发生I / O错误。
-
available
protected abstract int available() throws IOException
返回可从该套接字读取而不阻塞的字节数。- 结果
- 可以从该套接字读取但不阻塞的字节数。
- 异常
-
IOException
- 确定可用字节数时是否发生I / O错误。
-
close
protected abstract void close() throws IOException
关闭此套接字。- 异常
-
IOException
- 如果在关闭此套接字时发生I / O错误。
-
shutdownInput
protected void shutdownInput() throws IOException
将此套接字的输入流放置在“流的末尾”。 发送到此套接字的任何数据都被确认,然后静默丢弃。 如果您在套接字上调用此方法后从套接字输入流中读取,则该流的available
方法将返回0,而其read
方法将返回-1
(流结束)。- 异常
-
IOException
- 如果在关闭此套接字时发生I / O错误。 - 从以下版本开始:
- 1.3
- 另请参见:
-
Socket.shutdownOutput()
,Socket.close()
,Socket.setSoLinger(boolean, int)
-
shutdownOutput
protected void shutdownOutput() throws IOException
禁用此套接字的输出流。 对于TCP套接字,任何先前写入的数据将被发送,随后是TCP的正常连接终止序列。 如果在套接字上调用shutdownOutput()之后写入套接字输出流,则流将抛出IOException。- 异常
-
IOException
- 如果在关闭此套接字时发生I / O错误。 - 从以下版本开始:
- 1.3
- 另请参见:
-
Socket.shutdownInput()
,Socket.close()
,Socket.setSoLinger(boolean, int)
-
getFileDescriptor
protected FileDescriptor getFileDescriptor()
返回此套接字fd
字段的值。- 结果
-
该套接字的
fd
字段。 - 另请参见:
-
fd
-
getInetAddress
protected InetAddress getInetAddress()
返回此套接字address
字段的值。- 结果
-
该套接字的
address
字段。 - 另请参见:
-
address
-
getPort
protected int getPort()
返回此套接字port
字段的值。- 结果
-
该套接字的
port
字段。 - 另请参见:
-
port
-
supportsUrgentData
protected boolean supportsUrgentData()
返回SocketImpl是否支持发送紧急数据。 默认情况下,返回false,除非方法在子类中被覆盖- 结果
- 如果紧急数据支持,则为true
- 从以下版本开始:
- 1.4
- 另请参见:
-
address
-
sendUrgentData
protected abstract void sendUrgentData(int data) throws IOException
在套接字上发送一个字节的紧急数据。 要发送的字节是该参数的低8位- 参数
-
data
- 发送数据的字节 - 异常
-
IOException
- 发送数据是否有错误。 - 从以下版本开始:
- 1.4
-
getLocalPort
protected int getLocalPort()
返回此套接字localport
字段的值。- 结果
-
该套接字的
localport
字段。 - 另请参见:
-
localport
-
setPerformancePreferences
protected void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
设置此套接字的性能首选项。套接字默认使用TCP / IP协议。 一些实现可以提供具有与TCP / IP不同的性能特征的替代协议。 该方法允许应用程序表达自己的偏好,以便在实现从可用协议中选择时应如何进行这些权衡。
性能偏好由三个整数描述,其值表示短连接时间,低延迟和高带宽的相对重要性。 整数的绝对值是无关紧要的; 为了选择协议,简单地比较值,较大的值表示较强的偏好。 负值表示比正值低的优先级。 例如,如果应用程序优先考虑低延迟和高带宽的短连接时间,则可以使用值
(1, 0, 0)
调用此方法。 如果应用程序喜欢高于低延迟的高带宽,并且在短的连接时间以上的低延迟,则可以使用值为(0, 1, 2)
调用此方法。 默认情况下,此方法不执行任何操作,除非在aa子类中被覆盖。- 参数
-
connectionTime
- 表示短连接时间的相对重要性的int
-
latency
- 表示低延迟的相对重要性的int
-
bandwidth
- 表示高带宽的相对重要性的int
- 从以下版本开始:
- 1.5
-
setOption
protected <T> void setOption(SocketOption<T> name, T value) throws IOException
调用设置套接字选项。- 参数类型
-
T
- 套接字选项值的类型 - 参数
-
name
- 套接字选项 -
value
- 套接字选项的值。 值null
可能对某些选项有效。 - 异常
-
UnsupportedOperationException
- 如果SocketImpl不支持该选项 -
IOException
- 如果发生I / O错误,或者套接字关闭。 - 从以下版本开始:
- 9
-
getOption
protected <T> T getOption(SocketOption<T> name) throws IOException
被称为获取套接字选项。- 参数类型
-
T
- 套接字选项值的类型 - 参数
-
name
- 套接字选项 - 结果
- 命名选项的值
- 异常
-
UnsupportedOperationException
- 如果SocketImpl不支持该选项。 -
IOException
- 如果发生I / O错误,或者套接字关闭。 - 从以下版本开始:
- 9
-
supportedOptions
protected Set<SocketOption<?>> supportedOptions()
返回一个由此impl和该impl的套接字支持的SocketOptions(Socket或ServerSocket)- 结果
- 一套SocketOptions
- 从以下版本开始:
- 9
-
-