首页 > 编程语言 > 详细

Java支持的套接字选项.md

时间:2020-04-26 21:13:15      阅读:49      评论:0      收藏:0      [点我收藏+]

Java支持BSD-style的选项.

TCP_NODELAY

用于设置是否禁用Nagle算法.
Nagle算法用于自动合并大量小的缓冲区消息;这个过程(称为nagling)通过减少必须发送的包的数量来提高网络应用程序系统的性能.
仅用于TCP: SocketImpl.

SO_BINDADDR

套接字绑定的本地地址,类型为INADDR_ANY.套接字创建时绑定的地址无法在之后修改.
可用于: SocketImpl, DatagramSocketImpl

SO_REUSEADDR

这个选项在Java中仅用于标识多播套接字.多播套接字默认配置该选项.
可用于: DatagramSocketImpl

SO_BROADCAST

用于关闭或开启数据报套接字的广播功能

IP_MULTICAST_IF

设置发送多播数据包的传出接口.用于多个网络接口的主机希望使用系统默认值以外的其他值.
可用于广播: DatagramSocketImpl

IP_MULTICAST_IF2

IP_MULTICAST_IF一样,但是可以支持IPV4和IPV6.

IP_MULTICAST_LOOP

此选项启用或禁用多播数据报的loopback. 多播套接字默认启用此选项.

IP_TOS

此选项在IP头为TCP或UDP套接字设置服务类型(type-of-service)或流量类(traffic class)字段

SO_LINGER

指定延迟关闭超时. 此选项禁用/启用从TCP套接字的close()立即返回. 使用非零整数超时启用此选项,意味着close()将阻塞,等待向对等方发送和确认所有写入的数据, 之后套接字将被优雅地关闭. 在到达延迟超时时, 使用TCP RST强制关闭套接字. 启用超时为0的选项会立即强制关闭. 如果指定的超时值超过65,535, 则会减少到65,535.
仅对TCP: SocketImpl有效

SO_TIMEOUT

设置阻塞套接字操作的超时:
ServerSocket.accept();
SocketInputStream.read();
DatagramSocket.receive();
必须在进入阻塞操作之前设置, 该选项才能生效. 如果超时过期, 操作将继续阻塞, java.io.InterruptedIOException. 在这种情况下, 套接字不会关闭.
适用于所有的套接字实现:SocketImpl,DatagramSocketImpl

SO_SNDBUF

设置平台底层I/O发送缓冲区大小.
setSendBufferSize时, 这是应用程序向内核提供的关于通过套接字发送数据时使用的缓冲区大小的建议.
getSendBufferSize时, 这必须返回平台在此套接字上发送数据时实际使用的缓冲区的大小.
适用于所有的套接字实现:SocketImpl,DatagramSocketImpl.

SO_RCVBUF

设置平台底层I/O接收缓冲区大小.
setReceiveBufferSize时, 这是应用程序向内核提供的关于通过套接字接收数据时使用的缓冲区大小的建议.
getReceiveBufferSize时, 这必须返回平台在此套接字上接收数据时实际使用的缓冲区的大小.
适用于所有的套接字实现:SocketImpl,DatagramSocketImpl.

SO_KEEPALIVE

当为一个TCP套接字设置了keepalive选项,并且在两个小时内套接字之间没有任何数据交换(注意:实际的值取决于实现),TCP会自动向对等端发送一个keepalive探测。这个探测是一个TCP段,对等端必须响应它。
预期会有三种响应:

  1. 对等端响应期望的ACK. 应用程序不会被通知(因为一切正常). TCP将在下一个2小时无活动后再次发送一个探测.
  2. 对等端响应RST, 这表示对端主机已崩溃并重启. 套接字将被关闭.
  3. 对等端无响应. 套接字将被关闭.
    此选项的目的时检测对端主机是否已崩溃.
    仅适用于 TCP socket: SocketImpl

SO_OOBINLINE

当设置OOBINLINE选项时,在套接字上接收到的任何TCP紧急数据(TCP URG)都将通过套接字输入流接收. 当该选项被禁用时(这是默认值), 紧急数据将被悄悄地丢弃(不通知应用程序).

SO_BACKLOG

backlog参数是套接字上挂起连接的最大数量. 它的确切语义是特定于实现的. 具体地说, 实现可以设置最大长度, 也可以选择忽略参数. 如果backlog参数的值为0或负值, 则使用特定于实现的缺省值.
ServerSocketChannel.java

public abstract ServerSocketChannel bind(SocketAddress local, int backlog)
        throws IOException;

引用

  • java.net.SocketOptions Javadoc

Java支持的套接字选项.md

原文:https://www.cnblogs.com/onion94/p/Java-Socket-Options.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!