java怎么实现http的长连接

Tom_3 2016-01-24 10:42:21
java的URLConnection类是怎么实现http的长连接的?
我的理解:
当应用程序读取完响应体内容后或者调用 close() 关闭了URLConnection.getInputStream()返回的流,
JDK中的HTTP协议句柄将关闭连接,并将连接放到连接缓存中。下次获取URLConnection示例,并获取InputStream流时,会再次使用之前打开的TCP连接。
也就是说:
public static String sendPost(String url, String param) {
String result = "";
try {
URL httpurl = new URL(url);
HttpURLConnection httpConn = (HttpURLConnection) httpurl.openConnection();
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
PrintWriter out = new PrintWriter(httpConn.getOutputStream());
out.print(param);
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
in.close();
} catch (Exception e) {
System.out.println("没有结果!" + e);
}
return result;

}

我在间隔较短的时候内调用上面的方法(连接的地址不一样,当还是同一个服务器同一个项目),用的是同一个TCP连接。
我这么理解是对的吗?
不对的话请具体讲讲。
...全文
1808 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
by_xiaobai007 2019-10-15
  • 打赏
  • 举报
回复
isyoungboy 2019-04-11
  • 打赏
  • 举报
回复
https://www.jianshu.com/p/459b708ab0b8
tianfang 2016-01-25
  • 打赏
  • 举报
回复
基本的HTTP(相对webSocket)是无连接的TCP,一旦服务器传输完毕,服务器会主动关闭。 所以,你的客户端HttpURLConnection的连接会自动失效,你缓存是没有意义的

67,542

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧