java怎么实现长连接?

Python013

java怎么实现长连接?,第1张

应该是HTTP连接吧,HTTP连接本身的request/response模式设计就是短链接的,即服务器端响应之后断开连接。

若要做长连接,在没有具体业务的情况下,最基础的就是建立java.net.Socket连接,自己制定协议来控制断开。服务器端的实现老的有标准IO(java.net.*),新的有NIO(java.nio.*)。有具体业务时可以考虑一些成熟的协议来实现,如XMPP等。

我的理解:

当应用程序读取完响应体内容后或者调用 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连接。我这么理解对吗?不对的话请具体讲讲。谢谢。