c++服务器,Java InputStreamReader.read不能返回-1,BufferedReader不返回值

C++ server, Java InputStreamReader.read cant return -1 and BufferedReader not return value

本文关键字:BufferedReader 返回 返回值 read 服务器 Java InputStreamReader c++ 不能      更新时间:2023-10-16

基于Java平台的c++服务器开发。堆一些小问题。希望有人能在这里提供帮助

c++服务器代码片段

// Sample send a socket
sned(ConnectedSocket, classroomlist, strlen(classromlist), 0);

In Java Client

// Catch the socket
InputStreamReader isr = new InputStreamReader(socket.getInputStream());
char[] buffer = new char[3];

问题来了

  1. 如果我使用BufferedReader,没有任何读取

  2. 我试着使用

    , ((x = inr.read(缓冲))! = 1){}

,在读取时堆栈到while循环中。(发现为什么BufferedReader没有输出)

  1. 我试着while(true){ SYstem.out.println(inr.read(buffer)) }打印出每一轮阅读的全部长度。问题发现!输出如下所示vvvvvvvvvvv

    05-31 11:35:09.934: D/@@@(3264): 305-31 11:35:09.934: d/@@@(3264): 305-31 11:35:09.934: d/@@@(3264): 305-31 11:35:09.934: D/@@@(3264): 2

InputStremaReader.read()假设return -1,如果tcp包到达终点。但是函数在结束之前只是堆栈,等待等待等待等待gggggg

如果发送方从未关闭套接字,接收方将永远无法获得流结束条件。

相反,如果接收端从未得到流结束条件,则结论必须是发送端从未关闭套接字。