日期:2014-05-20  浏览次数:20749 次

为什么客户端只接受了一次 哪位大虾求赐教!
客户端:
public void run(){ //使线程ClientStartThread跑起来
try{
/*
* 利用流将数据在socket上进行传输,主要是利用inputStream和outputStream.
* 同时使用getInputStream()和getOutStream()将流打包,
* 最后用BufferdReader建立缓存以便能方便的进行读写
* */
System.out.println("啥子问题!");
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
while(true){
System.out.println("最后这点那!");
try{
String i=in.readLine(); //将读取缓存的数据转化为字符串
p.setText(i); //将获得的in作为字符串打印在文本框内
}catch (Exception e) {
e.printStackTrace();
break;
}
}
in.close(); //关闭in
s.close(); //关闭socke
}catch(Exception e){
e.printStackTrace();
}
}


服务器端:
public void run(){ //线程正式"跑起来"
try{
/*
* 利用流将数据在socket上进行传输,主要是利用inputStream和outputStream.
* 同时使用getInputStream()和getOutStream()将流打包,
* 最后用BufferdReader建立缓存以便能方便的进行读写
* */
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
while(true){
Date d = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss ");
String date=sdf.format(d);
System.out.println("看看sever这端!");
out.write(date+"\n"); //将时间输出到客户端
out.flush(); //刷新out
String strWord = in.readLine(); //获取客户端发过来的字符串
System.out.println("这个不晓得!");
try {
Thread.sleep(5000); //每隔1分钟给客户端发送数据
} catch (InterruptedException e) {
e.printStackTrace();
break;
}
if(strWord=="quit"){ //当捕获的字符串是"quit"时
long end = System.currentTimeMillis();//获取捕获"quit"数据时的时间
out.write("链接用时"+(end-start)+"毫秒");//计算该客户链接的时间
p.setText("客户端正常关闭!"); //打印客户的正常关闭
break;
}
}
in.close(); //关闭in
s.close(); //关闭socket链接
}catch(Exception e){
e.printStackTrace();
}
}


原意是从服务器端每五秒发送时间到客户端,直到客户端输送“quit”到服务器端。但是现在只是给客户端发送了一次就关闭了socket 再也发送不了了!

------解决方案--------------------
Java code

if(in.available()>0)
{
String strWord = in.readLine(); //获取客户端发过来的字符串
if(strWord=="quit"){ //当捕获的字符串是"quit"时
long end = System.currentTimeMillis();//获取捕获"quit"数据时的时间
out.write("链接用时"+(end-start)+"毫秒");//计算该客户链接的时间
p.setText("客户端正常关闭!"); //打印客户的正常关闭
break;
}
}