| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
public interface SocketOptions
获取/设置套接字选项的方法的接口。此接口由 SocketImpl 和 DatagramSocketImpl 实现。它们的子类应该重写此接口的方法来支持它们自己的选项。
在此接口中指定选项的方法和常量仅用于实现目的。如果不为 SocketImpl 或 DatagramSocketImpl 创建子类,就不要直接使用它们。在 Socket、ServerSocket、DatagramSocket 和 MulticastSocket 中,存在获取/设置所有这些选项的类型安全的方法。
| 字段摘要 | |
|---|---|
| static int | IP_MULTICAST_IF设置用于发送多播包的传出接口。 | 
| static int | IP_MULTICAST_IF2同上。 | 
| static int | IP_MULTICAST_LOOP此选项启用或禁用多播数据报的本地回送。 | 
| static int | IP_TOS此选项为 TCP 或 UDP 套接字在 IP 地址头中设置服务类型或流量类字段。 | 
| static int | SO_BINDADDR获取绑定套接字的本地地址(不能仅将此选项“设置”为“得到”,因为套接字是在创建时绑定的,所以本地绑定的地址不可更改)。 | 
| static int | SO_BROADCAST为套接字设置 SO_BROADCAST。 | 
| static int | SO_KEEPALIVE为 TCP 套接字设置 keepalive 选项时,如果在 2 个小时(注:实际值与实现有关)内在任意方向上都没有跨越套接字交换数据,则 TCP 会自动将 keepalive 探头发送到同位体。 | 
| static int | SO_LINGER指定关闭时逗留的超时值。 | 
| static int | SO_OOBINLINE设置 OOBINLINE 选项时,在套接字上接收的所有 TCP 紧急数据都将通过套接字输入流接收。 | 
| static int | SO_RCVBUF设置传入网络 I/O 的平台所使用基础缓冲区的大小的提示。 | 
| static int | SO_REUSEADDR设置套接字的 SO_REUSEADDR。 | 
| static int | SO_SNDBUF设置传出网络 I/O 的平台所使用的基础缓冲区大小的提示。 | 
| static int | SO_TIMEOUT设置阻塞 Socket 操作的超时值: ServerSocket.accept(); SocketInputStream.read(); DatagramSocket.receive(); 选项必须在进入阻塞操作前设置才能生效。 | 
| static int | TCP_NODELAY对此连接禁用 Nagle 算法。 | 
| 方法摘要 | |
|---|---|
|  Object | getOption(int optID)获取选项的值。 | 
|  void | setOption(int optID, Object value)启用/禁用 optID 指定的选项。 | 
| 字段详细信息 | 
|---|
static final int TCP_NODELAY
仅对 TCP (SocketImpl) 有效。
Socket.setTcpNoDelay(boolean), 
      Socket.getTcpNoDelay(), 
      常量字段值
     static final int SO_BINDADDR
此选项必须在构造方法中指定。
对 SocketImpl、DatagramSocketImpl 有效。
Socket.getLocalAddress(), 
      DatagramSocket.getLocalAddress(), 
      常量字段值
     static final int SO_REUSEADDR
对 DatagramSocketImpl 有效。
static final int SO_BROADCAST
static final int IP_MULTICAST_IF
对多播(DatagramSocketImpl)有效。
MulticastSocket.setInterface(InetAddress), 
      MulticastSocket.getInterface(), 
      常量字段值
     static final int IP_MULTICAST_IF2
MulticastSocket.setNetworkInterface(NetworkInterface), 
      MulticastSocket.getNetworkInterface(), 
      常量字段值
     static final int IP_MULTICAST_LOOP
static final int IP_TOS
static final int SO_LINGER
仅对 TCP(SocketImpl)有效。
Socket.setSoLinger(boolean, int), 
      Socket.getSoLinger(), 
      常量字段值
     static final int SO_TIMEOUT
ServerSocket.accept(); SocketInputStream.read(); DatagramSocket.receive();
选项必须在进入阻塞操作前设置才能生效。如果超过超时值,操作将继续阻塞,将引发 java.io.InterruptedIOException。在此情况下,将不关闭 Socket。
对所有套接字(SocketImpl、DatagramSocketImpl)都有效。
Socket.setSoTimeout(int), 
      ServerSocket.setSoTimeout(int), 
      DatagramSocket.setSoTimeout(int), 
      常量字段值
     static final int SO_SNDBUF
Socket.setSendBufferSize(int), 
      Socket.getSendBufferSize(), 
      DatagramSocket.setSendBufferSize(int), 
      DatagramSocket.getSendBufferSize(), 
      常量字段值
     static final int SO_RCVBUF
Socket.setReceiveBufferSize(int), 
      Socket.getReceiveBufferSize(), 
      DatagramSocket.setReceiveBufferSize(int), 
      DatagramSocket.getReceiveBufferSize(), 
      常量字段值
     static final int SO_KEEPALIVE
Socket.setKeepAlive(boolean), 
      Socket.getKeepAlive(), 
      常量字段值
     static final int SO_OOBINLINE
Socket.setOOBInline(boolean), 
      Socket.getOOBInline(), 
      常量字段值
     | 方法详细信息 | 
|---|
void setOption(int optID,
               Object value)
               throws SocketException 
  
 SocketImpl s;
 ...
s.setOption(SO_LINGER, new Integer(10));
    // OK - set SO_LINGER w/ timeout of 10 sec.
 s.setOption(SO_LINGER, new Double(10));
    // ERROR - expects java.lang.Integer
 如果请求的选项是二进制的,则其可以由 java.lang.Boolean 使用此方法设置: 
    
 s.setOption(TCP_NODELAY, new Boolean(true));
    // OK - enables TCP_NODELAY, a binary option
  
    
 s.setOption(TCP_NODELAY, new Boolean(false));
    // OK - disables TCP_NODELAY
 s.setOption(SO_LINGER, new Boolean(false));
    // OK - disables SO_LINGER
  
    
optID - 标识选项
     value - 套接字选项的参数 
     SocketException - 如果未识别选项、套接字被关闭或者发生某种低级别的错误
     getOption(int)
     
Object getOption(int optID)
                 throws SocketException 
  
 SocketImpl s;
 ...
 Boolean noDelay = (Boolean)(s.getOption(TCP_NODELAY));
 if (noDelay.booleanValue()) {
     // true if TCP_NODELAY is enabled...
 ...
 }
  
    对于将特定类型用作参数的选项,getOption(int) 将返回参数的值,另外返回 java.lang.Boolean(false):
 Object o = s.getOption(SO_LINGER);
 if (o instanceof Integer) {
     System.out.print("Linger time is " + ((Integer)o).intValue());
 } else {
   // the true type of o is java.lang.Boolean(false);
 }
  
    
optID - 标识要获取的选项的 
      int 
     SocketException - 如果套接字被关闭 
     SocketException - 如果 
      optID 根据协议堆栈(包括 SocketImpl)是未知的
     setOption(int, java.lang.Object)
     | 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。