Java 从TCP服务器读取完整输入

Java 从TCP服务器读取完整输入,java,c++,tcp,tcpserver,java-client,Java,C++,Tcp,Tcpserver,Java Client,我目前正在从事一个客户机/服务器项目。 直到现在,两个都是C++,现在我正在开发我的客户端java。 为了从服务器接收信息,我一直在使用 BufferedReader in = new BufferedReader(new InputStreamReader(Socket.getInputStream())); 并且一直在使用 in.readLine() 问题是,当我需要从服务器接收多行时,由于“\n”字符,客户端在第一行之后停止 我如何避免这种情况发生并接收所有信息 我想到了使用char[

我目前正在从事一个客户机/服务器项目。 直到现在,两个都是C++,现在我正在开发我的客户端java。 为了从服务器接收信息,我一直在使用

BufferedReader in = new BufferedReader(new InputStreamReader(Socket.getInputStream()));
并且一直在使用

in.readLine()
问题是,当我需要从服务器接收多行时,由于“\n”字符,客户端在第一行之后停止

我如何避免这种情况发生并接收所有信息

我想到了使用char[] 像这样:

char[] buffer = new char[1024];
但问题是,当客户端接收到下一条消息时,缓冲区中仍有剩余的消息

任何帮助都会很好


谢谢

服务器是否关闭了套接字?如果没有,您希望如何知道它何时完成写入?您需要通过在开始时向服务器发送数据大小来通知服务器它应该从客户端获得多少数据。另一种方法是解析接收到的数据,搜索一个神奇的值,这样服务器就知道这是数据的结尾。您只需一直读取,直到读取所有数据为止。关于如何将数据的大小传递给接收器的问题仍然悬而未决。在最极端的情况下,服务器只是在发送完所有数据后关闭连接,所以您会一直读取,直到无法再读取为止。服务器不会关闭套接字,它会对多个发送/接收操作保持打开状态。服务器知道要读多少,问题出在客户端只要不断调用
readLine
,直到您获得所需的所有信息。