【问题标题】:PrintWriter vs BufferedWriterPrintWriter 与 BufferedWriter
【发布时间】:2019-05-25 21:05:53
【问题描述】:

我正在尝试将字符串从我的服务器传输到我的客户端,并且我试图找到一个解释,为什么当我在我的服务器中使用 PrintWriter 时,客户端会在我使用 @987654322 时收到字符串@客户端没有收到字符串。

在我的客户中,我有下一个读者/作者:

out=new PrintWriter(s.getOutputStream());
in=new BufferedReader(new InputStreamReader(s.getInputStream()));

在我的主服务器中,我正在通过下一次调用从服务器接收数据:

String sol=in.readLine();

在我的服务器中,我正在通过下一次调用发送数据(os 是我在函数中获得的 outputStream):

PrintWriter out= new PrintWriter(os);
out.write("test");
out.flush();

当我使用BufferedWriter时,它不会向客户端发送数据(或者客户端无法接收?)“

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(os));
out.append("test"); // tried also using out.write
out.flush();  

【问题讨论】:

  • 对于缓冲写入器,您必须使用写入方法以及打印写入器
  • 作者也试过了,结果一样
  • 很难从您的代码 sn-p 中分辨出来,但您的读者期待一个“行”,所以我假设您的打印编写器可能会在发送的数据中添加回车,而缓冲区是不是。但是,这不能从您的代码中断言。不过值得一试!
  • 因为您使用了PrintWriter.println(),它发送一个行终止符,但BufferedWriter.write(),它没有,并且您正在使用readLine(),它阻塞直到收到行终止符,或者结束-of-stream 或发生异常。

标签: java sockets printwriter bufferedwriter


【解决方案1】:

在我的服务器端 Bufferwriter 不会在字符串的末尾添加“\n”,而在我的客户端我正在尝试使用输入流读取一行。 Printwriter 在方法 println 中添加“\n”。感谢@EdwinDalorzo 的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2013-03-26
    • 2019-02-10
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多