java socket参数详解:SoLinger
来源:互联网 发布:小皇帝奇遇记 知乎 编辑:程序博客网 时间:2024/05/22 00:53
启用/禁用具有指定逗留时间(以秒为单位)的 SO_LINGER。最大超时值是特定于平台的。 该设置仅影响套接字关闭。默认值为-1,表示禁用。
这个Socket选项可以影响close方法的行为。在默认情况下,当调用close方法后,将立即返回;如果这时仍然有未被送出的数据包,那么这些数据包将被丢弃。如果将linger参数设为一个正整数n时(n的值最大是65,535),在调用close方法后,将最多被阻塞n秒。在这n秒内,系统将尽量将未送出的数据包发送出去;如果超过了n秒,如果还有未发送的数据包,这些数据包将全部被丢弃;而close方法会立即返回。如果将linger设为0,和关闭SO_LINGER选项的作用是一样的。
这个Socket选项可以影响close方法的行为。在默认情况下,当调用close方法后,将立即返回;如果这时仍然有未被送出的数据包,那么这些数据包将被丢弃。如果将linger参数设为一个正整数n时(n的值最大是65,535),在调用close方法后,将最多被阻塞n秒。在这n秒内,系统将尽量将未送出的数据包发送出去;如果超过了n秒,如果还有未发送的数据包,这些数据包将全部被丢弃;而close方法会立即返回。如果将linger设为0,和关闭SO_LINGER选项的作用是一样的。
package socket;import java.io.*;import java.net.Socket;import java.net.UnknownHostException;import org.apache.log4j.Logger;public class Test_solinger {private static Logger logger = Logger.getLogger(Test_solinger.class);public static void main(String[] args) {BufferedReader in = null;PrintWriter out = null;try {String ip = "127.0.0.1";Socket socket = new Socket(ip, 10000);in = new BufferedReader(new InputStreamReader(socket.getInputStream()));out = new PrintWriter(socket.getOutputStream());logger.debug(socket.getSoLinger());/** * 这里调用了socket.close()返回时,hello和world未必已经成功发送到对方了,如果我们设置了linger而不小于0,那么close会等到发送的数据已经确认了才返回。 * 但是如果对方宕机,超时,那么会根据linger设定的时间返回。 * 有了后面三句,socket关闭后, 服务端也会收到信息 */ boolean on = true;int linger = 100;socket.setSoLinger(on, linger);String head = "hello ";String body = "world\r\n";out.write(head);out.write(body);socket.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
- java socket参数详解:SoLinger
- java socket参数详解:SoLinger
- java socket参数详解:SoLinger
- Java Socket参数详解
- Java Socket 参数详解
- java socket参数详解:BackLog
- java socket参数详解:SoTimeout
- java socket参数详解:KeepAlive
- java socket参数详解:TcpNoDelay
- java socket参数详解:KeepAlive
- java socket参数详解:BackLog
- java socket参数详解:SoTimeout
- java socket参数详解:KeepAlive
- java socket参数详解:TcpNoDelay
- java socket参数详解:SO_REUSEADDR
- java socket参数详解:BackLog
- java socket参数详解:BackLog
- java socket:TcpNoDelay 参数详解
- “密谋”换工作
- jQuery核心函数
- DDMS的使用、内存溢出的调试和模拟器的启动命令参数
- C语言中的可变参数:va_list ,va_start,va_arg,va_end
- Spring的几种注入类型
- java socket参数详解:SoLinger
- Gerrit介绍
- 图像处理之简单数字水印 - 文字轧花效果
- 基于Canvas元素的代码高亮编辑器Daisy Editor
- Mysql源代码阅读笔记(三) 重要的宏
- 整理中。。。
- mongo db 使用方法
- HostMonitor
- HOJ Megaminx