日期:2014-05-17  浏览次数:20622 次

关于输入流关闭的问题。。
以下是服务端代码
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.*;
import javax.swing.*;
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();就运行不了了。

------解决方案--------------------
服务器输出流关闭了,客户端的输入流还不知道呢?还在使劲的读当然报错了!在客户端加个判断吧
if(socket.getInputStream()==null)
{
br.close();
}