上网查了一些资料,长连接和短连接的意思大致明白了,但是具体的代码怎么实现,希望有朋友不吝赐教一下,写一个长连接的例子和一个短连接的例子,本人好学习一下,谢了!!!!

解决方案 »

  1.   

    长连接你去看看nio下的包吧,最近也在学习这东东
      

  2.   

    我个人理解,数据发完之后马上把连接close掉就是短连接,一直开着就是长连接。
      

  3.   

    我也觉得是这么个意思,那应该是这种类似实现
    import java.net.*;   
    import java.io.*;   
      
    public class Client{   
    static Socket server;   
      
    public static void main(String[] args)throws Exception{   
    server=new Socket(InetAddress.getLocalHost(),5678);   
    BufferedReader in=  
    new BufferedReader(new InputStreamReader(server.getInputStream()));   
    PrintWriter out=new PrintWriter(server.getOutputStream());   
    BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));   
      
    while(true){   
    String str=wt.readLine();   
    out.println(str);   
    out.flush();   
    if(str.equals("end")){   
    break;   
    }   
    System.out.println(in.readLine());   
    }
    /*重点在这里*/
    server.close();   //短连接马上关闭,长连接就不关闭了,大概就这么个意思   
    }   
      

  4.   

    上面代码copy的好像有点问题,不过意思应该很明白了
      

  5.   

    Socket 长连接的实现,需要另启一个线程间隔时间地发送心跳数据报文(内容可以自定义,比如发送 TEST 服务端返回 TEST_OK),如果发送了 TEST,并在读取数据超时时间之内读到了由服务端返回的 TEST_OK 时,那就表示当前链路是健康的。如果发送 TEST 报错,或者发送出去且超时时间已经到了还没有收到 TEST_OK 时,就进行重连处理,在此之前需要控制住所有往套接字中写的数据,让其阻塞在写入套接字之外。代码的实现很麻烦的,还涉及相当多的线程控制方面的东西,代码量也不少,在这里只能给你说个思路。
      

  6.   


    短连接: 
    run(){ 
    read //读取请求包 
    process //处理 
    write //应答处理结果 
    } 长连接 : 
    run(){ 
    while(NotEnd){ 
    read 
    process 
    write