设置Socket
来源:互联网 发布:天金加银软件 编辑:程序博客网 时间:2024/05/17 14:27
TCP_NODELAY
setTcpNoDelay(boolean) 立即发送数据。
默认情况下,发送数据采用Negale算法,就是说发送的数据先缓存,等缓存区满了再发送。
如果数据量小且发送持续,Negale算法就不实用了,此时使用上述设置可以关闭socket
的缓冲,直接发送信息,如果Socket的底层实现不支持TCP_NODELAY,在使用时会抛出SocketException
SO_RESUSEADDR
setResueAddress(boolean on) 是否允许重用Socket绑定的本地地址。
接收方通过Socket.close()方法关闭socket时,并不意味着底层的socket立即关闭,如果发送方还有信息输出的话,底层socket会持续接收信息,这是为了避免数据不会被其他恰好绑定到相同端口的心进程接收到。
这样的话底层socket会持续占用端口,如果关闭服务器程序后接着重启程序,会因为端口被占用而启动失败。
确保一个进程关闭Socket后,即使它还没释放端口,同一主机上的其他进程也可以立即重用该端口,可以使用Socket.setResueAddress(true)方法。此方法必须在Socket绑定端口前使用。否则设定无效。
此外公用一个端口的进程不许都调用方法,才能使一个进程关闭Socket后,另一个进程的Socket立刻重用该端口。
SO_TIMEOUT
setSoTimeout(int milliseconds) 设置接收数据的等待超时时间。
这个超时指的是接收的数据为填满缓存区所需要的时间,接收端在没有收到发送端的“信息已经结束”的标志且缓存区不满的情况下,超出超时时间就会抛出超时异常。
超时设置必须在接收数据前执行才有效,如果设置为0,则无超时限制。
SO_LINGER
setSoLinger(boolean on, int seconds) 设置发送消息的底层socket属性
执行Socket.close()方法时,底层Socket并不会立即结束,而是接着将未发送完成的信息(未被对方接收的数据)发送出去。知道发送完所有数据,才算真正关闭socket。
使用该方法可以设置底层socket的关闭特性,可以立即关闭,也可以延时关闭。注意,参数中的时间以秒为单位,而非毫秒。
SO_RCVBUF
setReceiverBufferSize(int size) 输入数据缓存区大小限定。
SO_SNDBUF
setSendBufferSize(int size) 输出数据缓存区大小限定。
SO_KEEPALIVE
setKeepAlive(true) 底层TCP监视连接是否有效。在连接两端没有相互传送数据超过2小时后,本地TCP实现将发送一个数据包给远程Socket,如果远程Socket没有响应,TCP会尝试12分钟,12分钟内未收到响应,就会关闭本地Socket,断开连接。
如果设置为false,就不会去监视连接情况和服务器是否崩溃情况。
OOBINLINE
setOOBInline(true) 表示支持发送(sendUrgentData(int data))一个字节的TCP紧急数据。如果设置为false,接收方收到紧急数据后直接将其丢弃。
注意除非使用更高级协议,否则服务器端是不可能判别普通信息和紧急信息的。
高级选项
setTrafficClass() 使用二进制的与方法来设计TCP传输的侧重点。
0x02 低成本 0x04 高可靠性 0x08最高吞吐量 0x10 最小延时。
这些设置针对不同的服务。
同时setPerformancePreference(int, int, int)方法来设定连接时间,延迟和贷款的相对重要性。
权值越大越重要。
- socket设置
- 设置socket
- socket设置
- 设置Socket
- setsockopt 设置socket
- socket 设置TimeOut
- setsockopt 设置socket (转贴)
- setsockopt 设置socket
- setsockopt 设置socket
- setsockopt 设置socket
- setsockopt 设置socket
- setsockopt 设置socket
- 设置socket缓冲区大小
- setsockopt 设置socket
- setsockopt 设置socket (转贴)
- setsockopt 设置socket
- setsockopt 设置socket
- socket缓冲区大小设置
- Using a socks proxy with git for the http transport
- TCP/IP协议简单解释
- PHP 中 implode() explode() 解析
- POI导出Excel之一:就这么快!
- 关闭Socket
- 设置Socket
- 算法2_实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,时间复杂度都为O(1)(keep it up)
- android---- Serializable 和 Parcelable 区别
- 创建Socket
- 周易的江湖
- poj 3104 Drying 二分+基本数学
- Socket
- Android中IntentService的原理及使用
- Divide Two Integers