以下是服务端代码
- 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();
}