Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11837
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-04 11:52
个人简介

it界的一只小虫

文章分类
文章存档

2015年(8)

2014年(5)

我的朋友
最近访客

分类: Java

2015-04-19 14:47:09


当我们调用socket.close()返回时,socket已经write的数据未必已经发送到对方了,例如

复制代码
Socket socket = new Socket();  
socket.connect(new InetSocketAddress(host, 8000));  
InputStream in = socket.getInputStream();  
OutputStream out = socket.getOutputStream();  
String head = "hello ";  
String body = "world\r\n";  
out.write(head.getBytes());  
out.write(body.getBytes()); 
socket.close();
复制代码

这里调用了socket.close()返回时,hello和world未必已经成功发送到对方了,如果我们设置了linger而不小于0,如:

bool on = true; int linger = 100;
....
socket.setSoLinger(boolean on, int linger)
......
socket.close();

那么close会等到发送的数据已经确认了才返回。但是如果对方宕机,超时,那么会根据linger设定的时间返回。

阅读(288) | 评论(0) | 转发(0) |
0

上一篇:Godaddy iis7 win主机 Discuz! X1伪静态设置

下一篇:没有了

给主人留下些什么吧!~~