bufferedWriter和PrintWriter
我在做TCP通信的练习时用到了bufferedWriter和printWriter两个类,但出现了一个问题:用printWriter写出时,Server那边能收到信息,但BufferedWriter写出时,服务器收不到, 为什么? 代码如下:
下面的失败,但是换成注释的代码又可以;请高手指点!!
//Client端;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class ChatClient {
public static void main(String[] args) {
BufferedWriter bw = null;
//PrintWriter pw = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
Socket s = new Socket("127.0.0.1",6006);
bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//pw = new PrintWriter(s.getOutputStream());
String msg = br.readLine();
while(msg != null && msg.trim().length() != 0) {
bw.write(msg);
//pw.println(msg);
bw.flush();
msg = br.readLine();
}
bw.close();
br.close();
}catch(Exception e) {
System.out.println("与服务器断开!");
}
}
}
//Server端;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
class ChatServer {
public static void main(String[] args)
{
ServerSocket ss = null;
try {
ss = new ServerSocket(6006);
while(true) {
Socket s = ss.accept();
new ChatConn(s);
}
} catch (Exception e) {
System.out.println("error!");
e.printStackTrace();
}
}
static class ChatConn implements Runnable {
Socket s = null;
BufferedReader br = null;
public ChatConn(Socket s) {
this.s = s;
new Thread(this).start();
}
public void run() {
try{
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String msg = br.readLine();
while(msg != null && msg.trim().length() != 0) {
System.out.println(msg);
msg = br.readLine();
}
} catch(Exception e) {
System.out.println("断开通信!");
}
}
}
}