private Socket so;//套接字
    private InputStream is;  //输入流
    private OutputStream os; //输出流
    private BufferedReader br;
    private PrintStream ps;public void run() {
try {
is = so.getInputStream();//套接字输入流
os = so.getOutputStream();//套接字输出流
br = new BufferedReader(new InputStreamReader(is));
ps = new PrintStream(os);
String temp;
while (true) {
temp = br.readLine();
if (temp.equals("<outu-null>")) {// 客户端要求刷新
ps.println(h.getHistory());  //发送所有聊天记录
ps.println(user.getUser());  //发送所有用户列表
} else........br,ps是什么意思?br = new BufferedReader(new InputStreamReader(is));
ps = new PrintStream(os);这两句是做什么的?
temp = br.readLine();又是什么意思?

解决方案 »

  1.   

    br,ps是什么意思?br是带有缓冲的输入流,ps是输出字符流。
    br = new BufferedReader(new InputStreamReader(is)); 
    ps = new PrintStream(os);这两句是做什么的?这两句把低级流向向更高级流的一种封装,以提供更强的功能。temp = br.readLine();又是什么意思?读取缓冲区里的一行数据。
      

  2.   

    输出流构造成打印流缓存一行一行的读,赋给temp
      

  3.   

    is = so.getInputStream();//套接字输入流 
    os = so.getOutputStream();//套接字输出流 
    br = new BufferedReader(new InputStreamReader(is)); 
    ps = new PrintStream(os); java中所涉及的流可以分为3中
    按照方向来分,可以分为输入流(也叫读)和输出流(也叫写)
    从最小单位来分,可以分为字节流和字符流
    按照层次来分,分为底层流和上层流,底层流又叫做节点流,是直接对应着流的目的地,上层流又叫做包装流
    其中is和os是从socket中返回的此套接字的输入和输出流,是最底层的节点流,但是节点流是二进制数据,可读性差,所以把它包装成有语言含义的字符流,此程序通过语句br = new BufferedReader(new InputStreamReader(is)); 
    ps = new PrintStream(os); 分别把输入和输出流包装成BufferedReader和PrintStream,关于这两个类使用请参看相应API
    temp = br.readLine(); 这句话在没有可读数据的时候是阻塞的,当有可读数据的时候读取一行,请参考BufferedReader的API
      

  4.   

    java.io流是用装饰器设计模式,总是会见到一个流装饰另一个流,以实现不同的功能。