【发布时间】: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