首页 / JAVA / Java支持的套接字选项.md
Java支持的套接字选项.md
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java支持的套接字选项.md,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2146字,纯文字阅读大概需要4分钟。
内容图文
![Java支持的套接字选项.md](/upload/InfoBanner/zyjiaocheng/1308/4f1fe535492c46069fcd7eb54934113e.jpg)
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段,对等端必须响应它。
预期会有三种响应:
- 对等端响应期望的ACK. 应用程序不会被通知(因为一切正常). TCP将在下一个2小时无活动后再次发送一个探测.
- 对等端响应RST, 这表示对端主机已崩溃并重启. 套接字将被关闭.
- 对等端无响应. 套接字将被关闭.
此选项的目的时检测对端主机是否已崩溃.
仅适用于 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
原文:https://www.cnblogs.com/onion94/p/Java-Socket-Options.html
内容总结
以上是互联网集市为您收集整理的Java支持的套接字选项.md全部内容,希望文章能够帮你解决Java支持的套接字选项.md所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。