套接字:BufferedReader/InputStream & BufferedWriter/OutputStream 不起作用



所以我正在尝试使用BufferedReader和BufferedWriter制作服务器/客户端解决方案,但它不起作用!仅使用 DataInputStream 和 DataOutputStream 工作得很好,但使用 Buffered 对象没有打印出来。我的错误在哪里?

public class TServer {
   static final int PORT = 8001;
   static final int QUEUE = 50;
   public static void main(String[] args) {
       try (ServerSocket serverSocket = new ServerSocket(PORT, QUEUE)) {
           Socket socket = serverSocket.accept();
           BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
           BufferedWriter output = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
           System.out.println(input.readLine());
           output.write("this is the server!");
           output.flush();
       } catch (IOException e) {
           System.out.println(e.getMessage());
           e.printStackTrace();
       }
   }
}

public class TClient {
   static final String HOST = "localhost";
   static final int PORT = 8001;
   public static void main(String[] args) {
       try (Socket socket = new Socket(HOST, PORT)) {
           BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
           BufferedWriter output = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
           output.write("this is the client");
           output.flush();
           System.out.println(input.readLine());
       } catch (IOException e) {
           System.out.println(e.getMessage());
           e.printStackTrace();
       }
   }
}

仅使用 DataInputStream 和 DataOutputStream 工作得很好,但使用 Buffered 对象没有打印出来。

客户端正在发送以下内容:

output.write("this is the client");

服务器正在尝试使用缓冲读取器读取一行:

System.out.println(input.readLine());
但是不会收到任何行,因为行尾终止符没有发送(

因此,该方法将阻塞(服务器也是如此,它不发送行尾终止符))。请参阅 BufferedReader 的 API,其中指出:

读取一行文本。一行被视为由换行符 ("")、回车符 ("\r") 或紧跟换行符的回车符中的任何一个终止。

您使用的是 BufferedReader 的方法readLine因此您应该在相应的 BufferedWriter 中写入以换行符结尾的字符串。喜欢:

    output.write("this is the client");
    output.newLine();

相关内容

  • 没有找到相关文章

最新更新