Я работал над (относительно) простой программой tcp client / server chat для моего сетевого класса. Проблема, с которой я сталкиваюсь, заключается в том, что я использую блокирующие вызовы, такие как 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();
}
Код клиента по сути тот же. Спасибо за ваше время!