Socket编程中Io流的输出问题
「已注销」 2017-07-24 05:24:29 以下是服务器代码:
public static void main(String[] args) throws Exception {
try {
ServerSocket ss = new ServerSocket(6666);
Socket s = ss.accept();
System.out.println("连接成功!");
BufferedReader brread = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter bwwrite = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader brKerboard = new BufferedReader(new InputStreamReader(System.in));
String readMessage = brread.readLine(); //问题出在这里 除了打印流的print方法其他流的write方法这里都读不到就一直阻塞在这
System.out.println("Client:" + readMessage);
while(readMessage!="bye") {
String writeMessage = brKerboard.readLine();
bwwrite.write(writeMessage);
bwwrite.flush();
readMessage = brread.readLine();
System.out.println("Client:" + readMessage);
}
brread.close();
} catch (IOException e) {
System.out.println("服务器启动异常");
e.printStackTrace();
}
以下是客户端代码:
public static void main(String[] args) throws Exception, Exception {
try {
Socket s = new Socket("192.168.1.104", 6666);
System.out.println("请回复客户端:");
BufferedReader brKeyboard = new BufferedReader(new InputStreamReader(System.in));
BufferedReader brServer = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
String readKeyborad = brKeyboard.readLine();
while(readKeyborad != "bye") {
pw.write(readKeyborad);
pw.flush();
String readMessage = brServer.readLine();
System.out.println("Server:" + readMessage);
readKeyborad = brKeyboard.readLine();
}
pw.close();
brServer.close();
brKeyboard.close();
s.close();
} catch (UnknownHostException e) {
System.out.println("端口号错误");
e.printStackTrace();
} catch (IOException e) {
System.out.println("IO流出错");
e.printStackTrace();
}
这个程序是客户端说一句 服务器说一句那样 从客户端先开始说话 问题在于我只能使用打印流包装输出管道后而且必须调用打印流的print方法才能将信息从客户端发送出去 而我使用其他流像缓冲流或者还是打印流 我用write方法输出 服务器就接收不到 想了半天不太明白是什么原因