java HttpURLConnection连接的disconnect问题

ramnight 发布于 2016/04/22 18:56
阅读 2K+
收藏 0

【华为云1024程序员节·向云而生】预约直播 抽14件华为电子产品礼包!>>>

1.HttpURLConnection.disconnect 如果不调用的话,会不会就不释放这个连接?

2.如果我想用keep-alive保持这个连接的话,是不是就不需要调用这个disconnect?

3.每次发起http请求都新建一个HttpURLConnection对象,是不是就和keep-alive没有关系了?都是创建的新的连接?不会复用?

4.我想用http连接池去保持http连接,应该怎么做?

加载中
0
xpbob
xpbob
HTTP/1.1默认使用持久连接,你不调用disconnect 的话,都享有持久连接,而且对于inputstream,outputstream,调用close也不会影响的,你把链接到的HttpURLConnection对象保存在集合里,应该没有问题,但是这有一点,对方的协议是1.1且没有修改配置
ramnight
ramnight
回复 @xpbob : 多谢指点~
xpbob
xpbob
回复 @ramnight : 其实吧,你的这个需求有点太那个了,主要是建立一个TCP连接不是什么特别耗时的事情,不像connection很耗时,所以池的需求省不了多少时间,但是你可以这么做,建立连接你就缓存起来,也不用管其他,等用的时候取出来,如果通讯正常,那就使用,如果抛出异常或者没有正确返回,那就把这个连接断掉,从新建立一个替换掉旧的
ramnight
ramnight
回复 @xpbob : 我明白keep-alive的意思,我现在只是想实现一个类似于数据库连接池的http连接池。io的关闭我清楚,只是不知道这个disconnect和new connect的时候是怎么实现的。
xpbob
xpbob
回复 @ramnight : http1.1默认是你一旦连接可以发送多个报文的,只要你不断开,你就会一直占用资源,但是实际情况中我们是有时间限制的,在一定时间内,你没有活动,那边的socket就会关闭,你这边的连接没断,但是发送数据就没响应,keepalvie就是为了防止这中情况,让服务器那边的知道你是一直活动的,不关闭资源
ramnight
ramnight
回复 @xpbob : 回收利用的协议栈,是不是和keep-alive没有关系?已经不是之前那个已经建立好的连接了?还需要再次建立连接才行?
下一页
返回顶部
顶部