当前位置: 代码迷 >> Java Web开发 >> 一个关于java输入流的有关问题。
  详细解决方案

一个关于java输入流的有关问题。

热度:113   发布时间:2016-04-17 10:19:30.0
一个关于java输入流的问题。。
这是服务端代码
Java code
import java.net.*;import java.io.*;public class Server{    private ServerSocket ss;    private Socket socket;    public Server(){        try{            ss = new ServerSocket(10000);            while(true){                        socket = ss.accept();            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));            String string = br.readLine();            bw.write(string,0,string.length());            br.close();            bw.close();            socket.close();            }        }        catch(IOException e){            System.err.println(e.toString());        }            }    public static void main(String args[]){        new Server();    }}

以下是客户端代码
Java code
import java.net.*;import java.io.*;public class Client{    private Socket socket;    public Client(){        try{            while(true){            socket = new Socket("127.0.0.1",10000);            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));             String string = br.readLine();            System.out.println(string);            br.close();            socket.close();            }        }        catch(IOException e){            System.err.println(e.toString());        }    }    public static void main(String args[]){        new Client();    }}

请大虾们帮帮我,我的目的是可以在服务端不断地给客户端发送信息,为什么在服务端代码那边加上 br.close(); 也就是关闭了输入流之后就只能发送一次信息,这究竟是为什么!!!

------解决方案--------------------
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
然后:
br.close();

也就是你把控制台的标准输入流(一般就是键盘)给关闭了,当然就再也得不到东西了。


所以把:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
放在循环体外。
br.close(),完全不需要,JVM会在程序结束的时候搞定它。
------解决方案--------------------
你没有关闭的话是在缓存中的。所以没有发送。
------解决方案--------------------

你单纯这样模拟,没有一点现实意义。
既然你做通信,那么就该附加于线程之上。没有线程的socket,还叫socket吗?
你可以参考这个:
http://hi.baidu.com/kai1379/blog/item/dc2362dc41d7c7086327980e.html
  相关解决方案