小弟初学java socket,想知道什么是长连接,什么是短连接。 上网查了一些资料,长连接和短连接的意思大致明白了,但是具体的代码怎么实现,希望有朋友不吝赐教一下,写一个长连接的例子和一个短连接的例子,本人好学习一下,谢了!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 长连接你去看看nio下的包吧,最近也在学习这东东 我个人理解,数据发完之后马上把连接close掉就是短连接,一直开着就是长连接。 我也觉得是这么个意思,那应该是这种类似实现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(); //短连接马上关闭,长连接就不关闭了,大概就这么个意思 } 上面代码copy的好像有点问题,不过意思应该很明白了 Socket 长连接的实现,需要另启一个线程间隔时间地发送心跳数据报文(内容可以自定义,比如发送 TEST 服务端返回 TEST_OK),如果发送了 TEST,并在读取数据超时时间之内读到了由服务端返回的 TEST_OK 时,那就表示当前链路是健康的。如果发送 TEST 报错,或者发送出去且超时时间已经到了还没有收到 TEST_OK 时,就进行重连处理,在此之前需要控制住所有往套接字中写的数据,让其阻塞在写入套接字之外。代码的实现很麻烦的,还涉及相当多的线程控制方面的东西,代码量也不少,在这里只能给你说个思路。 短连接: run(){ read //读取请求包 process //处理 write //应答处理结果 } 长连接 : run(){ while(NotEnd){ read process write } } 请问这个程序哪错了 JAVA问题 用JAVA循环添加大量数据到Sql Server时出现“Error establishing socket” FileUpLoad路径问题 如何从网管升级到程序员 poi提取word文本! 如何知道一个Field或Method是从super class继承过来的? java中的数组问题!请大家帮我看看!!! 什么时候用try..catch块 windows下窗口切换问题----急,明天交工 刚学android,intent有些问题 一道scjp考试题目,关于二叉排序的,请高人指教?
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(); //短连接马上关闭,长连接就不关闭了,大概就这么个意思
}
短连接:
run(){
read //读取请求包
process //处理
write //应答处理结果
} 长连接 :
run(){
while(NotEnd){
read
process
write
}
}