我想实现从客户端的控制台读取信息发送到服务器端,在服务器端的控制台打印也来,
发送好像是可以
但Server端总也接受不了。请高手指教:客户端:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;public class Client { public static void main(String args[]) throws IOException { Socket s = new Socket("192.168.10.160", 8888);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter  bw=  new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
while (true) {

String str = br.readLine();
System.out.println("msg: " + str);
bw.write(str);
}
}
}
服务器端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;public class SServer { public static void main(String args[]) throws IOException { ServerSocket ss = new ServerSocket(8888);
Socket s = ss.accept();
BufferedReader isr = new BufferedReader(new InputStreamReader(s.getInputStream()));
while (true) {
String str = isr.readLine();
System.out.println(str);
}
}
}

解决方案 »

  1.   

     bw 要刷过去啊,bw.flush()!!
      

  2.   

    楼主把Client的代码里的while循环语句这样改下试试:
            while (true) {
                
                String str = br.readLine();
                System.out.println("msg: " + str);
                bw.write(str);
                bw.flush();
            }
      

  3.   

    好像是必须得关闭流啊
    bw.flush();不管用。
      

  4.   

    加bw.flush()也不行的,我也没相出来为什么,
    改用PrintWriter,就可以了!祝你好运,呵呵!!
      

  5.   

    客户端问题
    1.使用BufferedWriter, 数据放在缓存,并没有发送出去
    BufferedWriter  bw=  new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    直接改成
    OutputStream os = s.getOutputStream();2. 发送数据没有回车, 服务器readLine永远也得不到回车换行内容客户端改成BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        OutputStream os = s.getOutputStream();
        while (true) {
            String str = br.readLine();
            str = str + "\r\n";
            System.out.print("msg: " + str);
            os.write(str.getBytes());
        }