我有以下代码,我正在尝试通过套接字发送数据文本。但是当我尝试通过 PrintWriter
发送时,我的客户端什么也不做,它在 in.readLine()
处停止。但是,当我简单地使用 OutputStream 并将其作为字节发送时,我的客户端在读取时没有任何问题。是否可以如我所愿?
out = new PrintWriter(sock.getOutputStream());
in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
while (true) {
System.out.println("SERVER-THREAD: IP "
+ sock.getInetAddress().getHostAddress());
out.write(marshall() + "\n");
Thread.sleep(1000);
}
//客户端
in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
out = new PrintWriter(sock.getOutputStream());
while (updateList) {
System.out.println("Before");
String inputip = in.readLine();
System.out.println("CLIENT: " + inputip);
//unmarshall(in);
System.out.println("After");
Thread.sleep(1000);
}
最佳答案
PrintWriter
缓冲要写入的数据,因此在缓冲区已满之前它不会这样做。你需要在这里调用 flush
out.flush();
关于Java:BufferedReader 和 OutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13659812/