若要做长连接,在没有具体业务的情况下,最基础的就是建立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连接。我这么理解对吗?不对的话请具体讲讲。谢谢。