java.net

接口
异常
java.lang.Object
  继承者 java.net.SocketImpl
所有已实现的接口:
SocketOptions

public abstract class SocketImpl
     
extends Object
implements SocketOptions

抽象类 SocketImpl 是实际实现套接字的所有类的通用超类。创建客户端和服务器套接字都可以使用它。

“普通”套接字严格按描述实现这些方法,无需尝试通过防火墙或代理。

从以下版本开始:
JDK1.0

字段摘要
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(InetAddress address, int port)
          将此套接字连接到指定主机上的指定端口号。
protected abstract  void connect(SocketAddress address, int timeout)
          将此套接字连接到指定主机上的指定端口号。
protected abstract  void connect(String host, int port)
          将此套接字连接到指定主机上的指定端口。
protected abstract  void create(boolean stream)
          创建一个流或数据报套接字。
protected  FileDescriptor getFileDescriptor()
          返回此套接字的 fd 字段的值。
protected  InetAddress getInetAddress()
          返回此套接字的 address 字段的值。
protected abstract  InputStream getInputStream()
          返回此套接字的输入流。
protected  int getLocalPort()
          返回此套接字的 localport 字段的值。
protected abstract  OutputStream getOutputStream()
          返回此套接字的输出流。
protected  int getPort()
          返回此套接字的 port 字段的值。
protected abstract  void listen(int backlog)
          将传入连接指示(连接请求)的最大队列长度设置为 count 参数。
protected abstract  void sendUrgentData(int data)
          在套接字上发送一个紧急数据字节。
protected  void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
          设置此套接字的性能偏好 (performance preferences)。
protected  void shutdownInput()
          将此套接字的输入流置于“流的末尾”。
protected  void shutdownOutput()
          禁用此套接字的输出流。
protected  boolean supportsUrgentData()
          返回此 SocketImpl 是否支持发送紧急数据。
 String toString()
          以 String 的形式返回此套接字的地址和端口。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
从接口 java.net.SocketOptions 继承的方法
getOption, setOption
 

字段详细信息

fd

protected FileDescriptor fd
此套接字的文件描述符对象。


address

protected InetAddress address
此套接字的远程端点的 IP 地址。


port

protected int port
此套接字连接到的远程主机的端口号。


localport

protected int localport
此套接字连接到的本地端口号。

构造方法详细信息

SocketImpl

public SocketImpl()
方法详细信息

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
将此套接字的输入流置于“流的末尾”。发送到此套接字的任何数据都会被接收到然后悄悄被丢弃。 如果在套接字上调用 shutdownInput() 后从套接字输入流读取内容,则流将返回 EOF(文件结束符)。

抛出:
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
在套接字上发送一个紧急数据字节。要发送的字节是参数的八个低位

参数:
data - 要发送的数据的字节
抛出:
IOException - 如果在发送数据时发生错误。
从以下版本开始:
1.4

getLocalPort

protected int getLocalPort()
返回此套接字的 localport 字段的值。

返回:
此套接字的 localport 字段的值。
另请参见:
localport

toString

public String toString()
String 的形式返回此套接字的地址和端口。

覆盖:
Object 中的 toString
返回:
此套接字的字符串表示形式。

setPerformancePreferences

protected void setPerformancePreferences(int connectionTime,
                                         int latency,
                                         int bandwidth)
设置此套接字的性能偏好 (performance preferences)。

默认情况下套接字使用 TCP/IP 协议。有些实现可能提供与 TCP/IP 具有不同性能特征的替换协议。此方法允许应用程序在实现从可用协议中作出选择时表达它自己关于应该如何进行折衷的偏好。

性能偏好由三个整数描述,它们的值分别指示短连接时间、低延迟和高带宽的相对重要性。这些整数的绝对值没有意义;为了选择协议,需要简单比较它们的值,较大的值指示更强的偏好。负值表示的优先级低于正值。例如,如果应用程序相对于低延迟和高带宽更偏好短连接时间,则其可以使用值 (1, 0, 0) 调用此方法。如果应用程序相对于低延迟更偏好高带宽,而相对于短连接时间更偏好低延迟,则其可以使用值 (0, 1, 2) 调用此方法。 默认情况下此方法不执行任何操作,除非在子类中重写该方法。

参数:
connectionTime - 表达短连接时间的相对重要性的 int
latency - 表达低延迟的相对重要性的 int
bandwidth - 表达高带宽的相对重要性的 int
从以下版本开始:
1.5