gpt4 book ai didi

java - 我应该有两个线程用于输入/输出还是使用 NIO?

转载 作者:行者123 更新时间:2023-12-01 15:43:11 26 4
gpt4 key购买 nike

我一直在为我的网络类(class)开发一个(相对)简单的 TCP 客户端/服务器聊天程序。我遇到的问题是我正在使用阻塞调用,例如 read()writeBytes()。因此,每当我尝试向服务器发送消息时,服务器不会将其打印出来,直到它写回一条消息。对于这种情况,使用一个线程进行输入和一个线程进行输出是最明智的解决方案,还是使用 NIO 会更好?只是为了让您了解我的代码现在的样子,我的服务器是:

    ServerSocket welcomeSocket = new ServerSocket(port);

DataOutputStream output;
BufferedReader inFromUser = new BufferedReader( new InputStreamReader(
System.in));
String sentence;

while ((sentence = inFromUser.readLine()) != null) {
Socket connectionSocket = welcomeSocket.accept();
output = new DataOutputStream( connectionSocket.getOutputStream());
output.writeBytes(sentence + "\n");

BufferedReader inFromServer = new BufferedReader( new InputStreamReader(
connectionSocket.getInputStream()));
System.out.println("Client said: " + inFromServer.readLine());
connectionSocket.close();
}

客户端代码本质上是相同的。感谢您的宝贵时间!

最佳答案

除非你想了解 NIO,否则就使用两个线程。 Java 教程提供了生成线程来处理与 ServerSocket 的客户端连接的示例。往"Writing the Server Side of a Socket"底部看.

关于java - 我应该有两个线程用于输入/输出还是使用 NIO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7657040/

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