- 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 InetAddressaddress该套接字远端的IP地址。protected FileDescriptorfd该套接字的文件描述符对象。protected intlocalport此套接字连接到的本地端口号。protected intport此套接字连接到的远程主机上的端口号。-
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 voidaccept(SocketImpl s)接受连接。protected abstract intavailable()返回可从该套接字读取而不阻塞的字节数。protected abstract voidbind(InetAddress host, int port)将此套接字绑定到指定的本地IP地址和端口号。protected abstract voidclose()关闭此套接字。protected abstract voidconnect(String host, int port)将此套接字连接到指定主机上的指定端口。protected abstract voidconnect(InetAddress address, int port)将此套接字连接到指定主机上的指定端口号。protected abstract voidconnect(SocketAddress address, int timeout)将此套接字连接到指定主机上的指定端口号。protected abstract voidcreate(boolean stream)创建流或数据报套接字。protected FileDescriptorgetFileDescriptor()返回此套接字fd字段的值。protected InetAddressgetInetAddress()返回此套接字address字段的值。protected abstract InputStreamgetInputStream()返回此套接字的输入流。protected intgetLocalPort()返回此套接字localport字段的值。protected <T> TgetOption(SocketOption<T> name)被称为获取套接字选项。protected abstract OutputStreamgetOutputStream()返回此套接字的输出流。protected intgetPort()返回此套接字port字段的值。protected abstract voidlisten(int backlog)将传入连接指示(连接请求)的最大队列长度设置为count参数。protected abstract voidsendUrgentData(int data)在套接字上发送一个字节的紧急数据。protected <T> voidsetOption(SocketOption<T> name, T value)调用设置套接字选项。protected voidsetPerformancePreferences(int connectionTime, int latency, int bandwidth)设置此套接字的性能首选项。protected voidshutdownInput()将此套接字的输入流放置在“流的末尾”。protected voidshutdownOutput()禁用此套接字的输出流。protected Set<SocketOption<?>>supportedOptions()返回一个由此impl和该impl的套接字支持的SocketOptions(Socket或ServerSocket)protected booleansupportsUrgentData()返回SocketImpl是否支持发送紧急数据。StringtoString()将此套接字的地址和端口作为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
-
-