1,TCP_NODELAY 设置true 保证包尽可能的发送,无论包的大小。
setTcpNoDelay(true) 关闭socket的缓冲,setTcpNoDelay(false)在此启动缓冲。
2,SO_LINGER 指定socket关闭的时候,如何处理尚未发送的数据报文。默认情况下,close()方法将立即返回。但是系统仍然会尝试发送剩余的数据。设置0时,关闭socket,所有未关闭的数据包奖杯丢弃,如果SO_LINGER打开而且延迟时间设置任意的正数,close() 方法会阻塞,等待发送和接受确认。
setSoLinger(true,210);最大的延迟的时间为65535秒。
3,SO_TIMEOUT socket读取数据超时,read() 调用会阻塞尽可能长时间来满足得到字节,这是SO_TIMEOUT 可以确保在这次调用阻塞的时间不会超过固定的毫秒数,setSoTimeout(1222)
4,SO_RCVBUF 控制用于网络输入的建议的接受缓冲区的大小。 setReciveBufferSize(int size)
SO_SNDBUF 控制用于网络输入的建议的发送的缓冲区的大小。 setSendBufferSize(int size)
如果将发送缓冲区这只为64KB,而接受缓冲区设置为128KB,那么发送和接受缓冲区的大小都将是64KB。
在UNIX和LINUX系统中通常指定一个最大缓冲区大小,一般是64KB和256KB。
5,SO_KEEPALIVE 偶尔会通过一个空闲发送一个数据包(一般一两个小时一次) ,以确保服务器位崩溃。如果服务器没能响应这个包,客户端会持续尝试11分钟多的时间,直到接受到响应为止。
setKeepAlive(Boolean o)
6,SO_REUSEADDR 允许另一个Socket绑定到这个端口中,即使此时仍然可能存在前一个Socket为接受的数据。setReuseAddress(Boolean on) 这个方法必须在绑定socket之前调用。