javatm platform
standard ed. 6

java.net
接口 socketoptions

所有〖all〗已知实现类:
datagramsocketimpl, socketimpl

public interface socketoptions

获取/设置套接字选项的方法的接口。此接口由 socketimpldatagramsocketimpl 实现。它们的子类应该〖yīng gāi〗重写此接口的方法来支持〖zhī chí〗它们自己〖his〗的选项。

在此接口中指定选项的方法和常量仅用于实现目的。如果不为 socketimpl 或 datagramsocketimpl 创建子类,就不要〖压嘛碟〗直接使用它们。在 socket、serversocket、datagramsocket 和 multicastsocket 中,存在获取/设置所有这些选项的类型安全〖ān quán〗的方法。


字段摘要
static intip_multicast_if
          设置用于发送多播包的传出接口。
static intip_multicast_if2
          同上。
static intip_multicast_loop
          此选项启用或禁用多播数据报的本地回送。
static intip_tos
          此选项为 tcp 或 udp 套接字在 ip 地址头中设置服务〖fú wù〗类型或流量类字段。
static intso_bindaddr
          获取绑定套接字的本地地址(不能仅将此选项“设置”为“得到”,因为套接字是在创建时绑定的,所以本地绑定的地址不可更改)。
static intso_broadcastjs随机数
          为套接字设置 so_broadcast。
static intso_keepalive
          为 tcp 套接字设置 keepalive 选项时,如果在 2 个小时(注:实际值与实现有关)内在任意方向上都没有跨越套接字交换数据,则 tcp 会自动将 keepalive 探头发送到同位体。
static intso_linger
          指定关闭时逗留的超时值。
static intso_oobinline
          设置 oobinline 选项时,在套接字上接收的所有 tcp 紧急数据都将通过套接字输入流接收。
static intso_rcvbuf
          设置传入网络 i/o 的平台所使用基础缓冲区的大小的提示〖tips〗。
static intso_reuseaddr
          设置套接字的 so_reuseaddr。
static intso_sndbuf
          设置传出网络 i/o 的平台所使用的基础缓冲区大小的提示〖tips〗。
static intso_timeout
          设置阻塞 socket 操作的超时值:serversocket.accept();socketinputstream.read();datagramsocket.receive();选项必须在进入阻塞操作前设置才能生效。
static inttcp_nodelay
          对此连接禁用 nagle 算法。
 
方法摘要
 objectgetoption(int optid)
          获取选项的值。
 voidsetoption(int optid,object value)
          启用/禁用 optid 指定的选项。
 

字段详细小約ense〗畔

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) 上的任何本地地址。多宿主机可以〖can〗使用此选项接受〖jiē shòu〗仅到其地址的连接(在使用 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。此选项启用和禁用发送广播消息的处理能力。它仅用于数据报套接字和支持〖zhī chí〗广播消息概念的网络上(例如,以太网、令牌网等),默认情况下为 datagramsocket 设置此选项。

从以下版本开始〖kāi shǐ〗:
那一天,很不巧刚好是周六假日,可是店里却只有三个正职和工读生,客人消化很慢,但人潮却不断涌入,因为别家店机子都办完了,甚至有人大老远从新北跑来这里办,一整天就是介绍?办手机?交机?推销配件、包膜不断重?},忙到几乎〖jī hū〗连吃饭时间都没有,快四点才勉强扒了两口饭,就这样〖then〗一路忙到晚上打烊
当然,我的工作〖work〗并不是接电话这么简单,当中包括〖bāo kuò〗会客,制订旅游〖travel〗计画等都是我的工作〖work〗内容
在电脑〖computer〗手发出各个类似诈欺简讯包的电话后,电话会自动转入我们这些一线电话手的家用电话,一线负责〖fù zé〗在电话中乔装成客服人员,说服所谓的客人,也就是耗子(受骗者),让对方相信〖上帝会存在的〗自己〖his〗是因为个资外流才会接到电话,必须由我们协助将他们转给二线的假警察〖jǐng chá〗
通常剧组助理稍微好过一点,至少千错万错可能〖would〗是天气的错、场地的错、或是演员的错,反正炮口一致对外,大家都舒心一点,全世界〖world〗没有什么事比抢到鸡腿便当来得重要〖zhòng yào〗
我的老师〖teacher〗说,他这辈子画过无数的爱〖ài〗心坠子、爱〖ài〗心耳环、爱心戒指,如果有人作业中出现〖There〗爱心,他绝对把分数打D-
由于〖Meanwhile〗当时宿舍那是属于男女混宿,女生就住在另外一间房间,干部怕流川会干出什么出格的行为,况且他自己的女朋友就住在同一栋宿舍,所以一气之下一拳就把流川从楼梯上打了下来
安排特化的演员,得比其他〖other〗化普通妆的演员提早至少两小时抵达现场,不能自由行动,而且〖but〗特效用品也容易对皮肤造成负担,常常让经纪人心疼到死,在片场追杀负责〖fù zé〗演员管理〖managing〗的?u片们
每当有火警或是救护案件出勤时,车辆发动时的废气,都让我怀疑是否已达到可以〖can〗致命的浓度〖attitudes〗
1.4
另请参见:
常量字段值

ip_multicast_if

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

对多播(datagramsocketimpl)有效。

另请参见:
multicastsocket.setinterface(inetaddress),multicastsocket.getinterface(),常量字段值

ip_multicast_if2

static final int ip_multicast_if2
同上。引入这一选项后,使用 ip_multicast_if 的行为与以前一样,而新选项可以支持利用 ipv4 和 ipv6 地址设置传出接口。注:确保不发生〖occasionally occurred〗与此选项的冲突〖chōng tū〗

从以下版本开始〖kāi shǐ〗:
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 地址头中设置服务〖fú wù〗类型或流量类字段。

从以下版本开始:
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 响应。不通知〖tōng zhī〗应用程序(因为一切正常)。在另一个 2 小时的不活动时间过后,tcp 将发送另一个探头。2. 同位体通过 rst 响应,通知〖tōng zhī〗本地 tcp 同位体主机已崩溃并重新启动。套接字被关闭。3. 同位体没有响应。套接字被关闭。此选项的目的是检测同位体主机是否崩溃。仅对 tcp 套接字(socketimpl)有效。

另请参见:
socket.setkeepalive(boolean),socket.getkeepalive(),常量字段值

so_oobinline

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

另请参见:
socket.setoobinline(boolean),socket.getoobinline(),常量字段值
方法详细信息

setoption

void setoption(int optid,    object value)    throws socketexception
启用/禁用 optid 指定的选项。如果将启用选项,并且它采用选定于选项的 "value",则将其传入 value。值的实际类型是特定于选项的,传递非期望类型的内容将发生〖occasionally occurred〗错误:
 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 根据协议堆栈(包括〖bāo kuò〗 socketimpl)是未知的
另请参见:
setoption(int, java.lang.object)

javatm platform
standard ed. 6

提交错误或意见〖yì jian〗
有关更多的 api 参考资料和开发〖kāi fā〗人员文档,请参阅 java se 开发〖kāi fā〗人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 sun microsystems, inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策