我写了一个C/S程序,客户端连接到服务器上,然后双方实现通信,但是为什么当客户端发送数据到服务器端后,客户端在等待服务器端发来的信息的时候总是提示socket已经关闭,我的客户端代码是:client = new java.net.Socket("127.0.0.1",1234);
java.io.OutputStream output = client.getOutputStream();
java.io.InputStream input = client.getInputStream();
java.io.BufferedWriter writer = 
         new java.io.BufferedWriter( new java.io.OutputStreamWriter(output));
writer.write("eiieei");
writer.flush();
writer.close();java.io.BufferedReader reader = new java.io.BufferedReader(
new java.io.InputStreamReader(input));String line = reader.readLine(); //这句话提示socket已经关闭我跟踪代码查一下了发现当执行writer.clase()后,socket就已经关闭了,但是如果不写这句话服务器端无法得到客户端发来的最后一个字符。
该如何解决?
谢谢

解决方案 »

  1.   

    BufferedReader读数据的时候,似乎有的问题,采用下面的方式
    import java.io.*; 
    import java.net.*; public class MyServer { 
    public static void main(String[] args) throws IOException{ 
    ServerSocket server=new ServerSocket(5678); 
    Socket client=server.accept(); 
    BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream())); 
    PrintWriter out=new PrintWriter(client.getOutputStream()); 
    while(true){ 
    String str=in.readLine(); 
    System.out.println(str); 
    out.println("has receive...."); 
    out.flush(); 
    if(str.equals("end")) 
    break; 

    client.close(); 


      

  2.   

    哦,我明白了。但是能否解释一下为什么BufferedReader读数据的时候会有问题吗?
      

  3.   

    还是不行呀,BufferedReader读取的时候还是得要求写入端关闭Writer才行
      

  4.   

    是呀,但是为什么发送数据时客户端必须关闭socket服务器端才能收得到呢?