java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

java.net
接口 SocketOptions

所有已知实现类:
DatagramSocketImpl, SocketImpl

public interface SocketOptions

获取/设置套接字选项的方法的接口。此接口由 SocketImplDatagramSocketImpl 实现。它们的子类应该重写此接口的方法来支持它们自己的选项。

在此接口中指定选项的方法和常量仅用于实现目的。如果不为 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 指定的选项。
 

字段详细信息

TCP_NODELAY

static final int TCP_NODELAY
对此连接禁用 Nagle 算法。在确认以前的写入数据之前不会缓冲写入网络的数据。

仅对 TCP (SocketImpl) 有效。

另请参见:
Socket.setTcpNoDelay(boolean), Socket.getTcpNoDelay(), 常量字段值

SO_BINDADDR

static final int SO_BINDADDR
获取绑定套接字的本地地址(不能仅将此选项“设置”为“得到”,因为套接字是在创建时绑定的,所以本地绑定的地址不可更改)。套接字的默认本地地址为 INADDR_ANY,表示多穴主机 (multi-homed host) 上的任何本地地址。多穴主机可以使用此选项接受仅到其地址的连接(在使用 ServerSocket 或 DatagramSocket 的情况下),或者将其返回地址指定到同位体(对于 Socket 或 DatagramSocket)。此选项的参数为 InetAddress。

此选项必须在构造方法中指定。

对 SocketImpl、DatagramSocketImpl 有效。

另请参见:
Socket.getLocalAddress(), DatagramSocket.getLocalAddress(), 常量字段值

SO_REUSEADDR

static final int SO_REUSEADDR
设置套接字的 SO_REUSEADDR。在 java 中,它仅用于 MulticastSocket,默认情况下为 MulticastSocket 设置此选项。

对 DatagramSocketImpl 有效。

另请参见:
常量字段值

SO_BROADCAST

static final int SO_BROADCAST
为套接字设置 SO_BROADCAST。此选项启用和禁用发送广播消息的处理能力。它仅用于数据报套接字和支持广播消息概念的网络上(例如,以太网、令牌网等),默认情况下为 DatagramSocket 设置此选项。

从以下版本开始:
1.4
另请参见:
常量字段值

IP_MULTICAST_IF

static final int IP_MULTICAST_IF
设置用于发送多播包的传出接口。可以在具有多个网络接口的主机上使用,在此类主机上应用程序可能希望使用系统默认值之外的接口。获取/返回 InetAddress。

对多播(DatagramSocketImpl)有效。

另请参见:
MulticastSocket.setInterface(InetAddress), MulticastSocket.getInterface(), 常量字段值

IP_MULTICAST_IF2

static final int IP_MULTICAST_IF2
同上。引入这一选项后,使用 IP_MULTICAST_IF 的行为与以前一样,而新选项可以支持利用 IPv4 和 IPv6 地址设置传出接口。 注:确保不发生与此选项的冲突

从以下版本开始:
1.4
另请参见:
MulticastSocket.setNetworkInterface(NetworkInterface), MulticastSocket.getNetworkInterface(), 常量字段值

IP_MULTICAST_LOOP

static final int IP_MULTICAST_LOOP
此选项启用或禁用多播数据报的本地回送。默认情况下,为 Multicast Socket 启用此选项。

从以下版本开始:
1.4
另请参见:
常量字段值

IP_TOS

static final int IP_TOS
此选项为 TCP 或 UDP 套接字在 IP 地址头中设置服务类型或流量类字段。

从以下版本开始:
1.4
另请参见:
常量字段值

SO_LINGER

static final int SO_LINGER
指定关闭时逗留的超时值。此选项启用/禁用从 TCP Socket 的 close() 立即返回。启用具有非零 Integer 超时值 的此选项意味着 close() 在传输和确认写入到同位体的所有数据前将一直阻塞,在那时套接字将从容地 关闭。到达逗留超时值时,套接字将通过 TCP RST 强制性 关闭。启用超时值为零的选项将立即强制关闭。如果指定的超时值大于 65,535,则其将被减少到 65,535。

仅对 TCP(SocketImpl)有效。

另请参见:
Socket.setSoLinger(boolean, int), Socket.getSoLinger(), 常量字段值

SO_TIMEOUT

static final int SO_TIMEOUT
设置阻塞 Socket 操作的超时值:
 ServerSocket.accept();
 SocketInputStream.read();
 DatagramSocket.receive();
 

选项必须在进入阻塞操作前设置才能生效。如果超过超时值,操作将继续阻塞,将引发 java.io.InterruptedIOException。在此情况下,将不关闭 Socket。

对所有套接字(SocketImpl、DatagramSocketImpl)都有效。

另请参见:
Socket.setSoTimeout(int), ServerSocket.setSoTimeout(int), DatagramSocket.setSoTimeout(int), 常量字段值

SO_SNDBUF

static final int SO_SNDBUF
设置传出网络 I/O 的平台所使用的基础缓冲区大小的提示。在设置方法中使用时,这是一个对应用程序内核的建议,关于通过套接字发送数据时使用的缓冲区大小。在获取方法中使用时,它必须返回在此套接字上发送数据时平台实际使用的缓冲区大小。 对所有套接字(SocketImpl、DatagramSocketImpl)都有效。

另请参见:
Socket.setSendBufferSize(int), Socket.getSendBufferSize(), DatagramSocket.setSendBufferSize(int), DatagramSocket.getSendBufferSize(), 常量字段值

SO_RCVBUF

static final int SO_RCVBUF
设置传入网络 I/O 的平台所使用基础缓冲区的大小的提示。在设置方法中使用时,这是一个对应用程序内核的建议,关于通过套接字接收数据时使用的缓冲区大小。在获取方法中使用时,它必须返回在此套接字上接收数据时平台实际使用的缓冲区大小。 对所有套接字(SocketImpl、DatagramSocketImpl)都有效。

另请参见:
Socket.setReceiveBufferSize(int), Socket.getReceiveBufferSize(), DatagramSocket.setReceiveBufferSize(int), DatagramSocket.getReceiveBufferSize(), 常量字段值

SO_KEEPALIVE

static final int SO_KEEPALIVE
为 TCP 套接字设置 keepalive 选项时,如果在 2 个小时(注:实际值与实现有关)内在任意方向上都没有跨越套接字交换数据,则 TCP 会自动将 keepalive 探头发送到同位体。此探头是同位体必须响应的 TCP 段。期望的响应为以下三种之一:1. 同位体通过期望的 ACK 响应。不通知应用程序(因为一切正常)。在另一个 2 小时的不活动时间过后,TCP 将发送另一个探头。2. 同位体通过 RST 响应,通知本地 TCP 同位体主机已崩溃并重新启动。套接字被关闭。3. 同位体没有响应。套接字被关闭。 此选项的目的是检测同位体主机是否崩溃。 仅对 TCP 套接字(SocketImpl)有效。

另请参见:
Socket.setKeepAlive(boolean), Socket.getKeepAlive(), 常量字段值

SO_OOBINLINE

static final int SO_OOBINLINE
设置 OOBINLINE 选项时,在套接字上接收的所有 TCP 紧急数据都将通过套接字输入流接收。禁用该选项时(默认),将悄悄丢弃紧急数据。

另请参见:
Socket.setOOBInline(boolean), Socket.getOOBInline(), 常量字段值
方法详细信息

setOption

void setOption(int optID,
               Object value)
               throws SocketException
启用/禁用 optID 指定的选项。如果将启用选项,并且它采用选定于选项的 "value",则将其传入 value。值的实际类型是特定于选项的,传递非期望类型的内容将发生错误:
 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
 

使用带有 Boolean(false) 的此方法可以禁用任何选项:
 s.setOption(TCP_NODELAY, new Boolean(false));
    // OK - disables TCP_NODELAY
 s.setOption(SO_LINGER, new Boolean(false));
    // OK - disables SO_LINGER
 

对于具有打开和关闭概念并且需要非 boolean 参数的选项,将其值设置为 Boolean(false) 之外的任何内容都会隐式地启用该选项。
如果未识别选项、套接字被关闭或者发生某种低级别的错误,则抛出 SocketException

参数:
optID - 标识选项
value - 套接字选项的参数
抛出:
SocketException - 如果未识别选项、套接字被关闭或者发生某种低级别的错误
另请参见:
getOption(int)

getOption

Object getOption(int optID)
                 throws SocketException
获取选项的值。启用时,二进制选项将返回 java.lang.Boolean(true);禁用时返回 java.lang.Boolean(false),例如:
 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 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策