Java_socket通信基础补充

来源:互联网 发布:淘宝香水嗅觉系真假 编辑:程序博客网 时间:2024/06/06 00:50

java socket通信基础补充

1、setReuseAddress(true|false),该参数设置为true,允许将多个socket绑定到同一个端口上,通过getReuseAddress()方法获取当前值即可,但是在发生Socket.bind()之前必须先设置才会生效。这个参数很少回去考虑使用。

2、setTcpNoDelay(true|false),该参数默认为false,会启用Nagle算法。启用这个算法是为了避免网络阻塞:当socket交互双方存在大量的小数据交互时,它会将较小的包延迟发送,若200ms内有多次小数据发送,则会合并在一起发送,若数据达到一定的范围,也会立即发送。

3、setSoLinger(true|false, int linger),该参数决定socket关闭时是否尝试继续发送Kernel缓冲区中还未发送出去的数据,若设置为true,则由第二个int类型的参数决定发送kernel缓冲区中还未发送的内容最长的等待时间,单位为秒,通过getSoLinger()可以获取到设置的值。

4、setSendBufferSize(int),设置发送缓冲区的大小,默认值为8192字节,通过getSendBufferSize()得到当前值,一般保持默认就OK.

5、setReceiveBufferSize(int),设置发送缓冲区的大小,默认值为8192字节,通过getReceiveBufferSize()得到当前值,一般保持默认就OK.

6、setKeepAlive(true|false),它每隔一段时间(很长一段时间,例如2小时)会将数据包发送到对方,如果对方响应,则认为连接依然存活;如果未响应,则在十多分钟后再发送一个数据包;如果还未响应,在再过十多分钟再继续发送一个数据包;如果对方还是未响应,则会将客户端的socket关闭,在某些情况下设置该参数后可以避免客户端的一些垃圾socket永远无法关闭的状况。该参数的默认值为false,可以通过getKeepAlive()获取到当前值。

7、setOOBInLine(true|false),这个参数默认为false,若开启,则允许通过socketde方法sendUrgentData(int)发送,这个API是直接发送,不会经过缓冲区。

0 0
原创粉丝点击