gpt4 book ai didi

java - Socket OutputStream(BufferedWriter) 不刷新消息

转载 作者:行者123 更新时间:2023-11-30 03:12:41 24 4
gpt4 key购买 nike

使用一个简单的客户端,我尝试通过 SocketOutputStream 发送控制台输入:

try (Socket socket = new Socket(host, port);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in))) {

Thread input = new Thread(() -> {
String msg;
try {
while ((msg = in.readLine()) != null) {
System.out.println(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
});
input.start();

String msg;
try {
while ((msg = stdIn.readLine()) != null) {
out.write(msg);
out.flush(); // not flushing?
}
} catch (Exception e) {
e.printStackTrace();
}

} catch (IOException e) {
e.printStackTrace();
}

在我发送END OF INPUT之后,我似乎在服务器端收到所有先前的尝试作为一个长String,但是流不会刷新,但是也会终止客户端。

使用 PrintWriter 而不是 BufferedWriter 会产生相同的结果。

为什么在从 std in 读取END OF INPUT(^Z) 之前数据不会消失?

最佳答案

你正在读台词,但你没有写台词。编写消息时添加行终止符。

关于java - Socket OutputStream(BufferedWriter) 不刷新消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33289224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com