在没有传输字符结束的情况下读取套接字输入流?

Reading Socket Inputstream Without End Of Transmission Character?

我正在尝试从不是我编写的服务器程序中读回数据。服务器程序不会发送任何类型的传输结束字符,并且在发送响应后不会关闭套接字。我可以在服务器上按下一个按钮来手动关闭连接,如果我在 (android) 客户端留了一点超时时间,那么我有时间按下它,我确实从服务器进入我的客户端应用程序。否则它最终会超时,我得不到任何回应。由于我无法控制服务器端的协议,我该如何关闭连接并从服务器获取响应?感谢您的帮助。

            cSocket.setSoTimeout(timeOut);  

            cOut = new PrintWriter(cSocket.getOutputStream(), true);

            cOut.println(msgIn);       

            cIn = new BufferedReader(new InputStreamReader(
                cSocket.getInputStream()));   

           int intTest;
           while ((intTest = cSocket.getInputStream().read()) != -1) {
           System.out.println(cIn.readLine());  

来自服务器的消息如下所示: 字符(60)...字符(62)字符(60)...字符(62)字符(60)...字符(62)字符(60)...字符(62)

...是字符内的随机数据不重复。

*最终编辑

得到这样的效果:

int c;
int intCount = 0;
StringBuilder response= new StringBuilder();
while ((c = cIn.read()) != -1) {

    response.append( (char)c ) ; 

       if (c == 62) {
       intCount = intCount + 1;        
       }
       if (intCount >=4) {
           cSocket.close();
           String result = response.toString();
           System.out.println(result);
           break;
       }

}
while ((intTest = cSocket.getInputStream().read()) != -1) {
    System.out.println(cIn.readLine());  

这没有任何意义。仅仅因为您读取了一个字节并不意味着您可以读取另一整行,并且您正在丢弃您读取的字节。应该是:

while ((intTest = cSocket.getInputStream().read()) != -1) {
       System.out.println(intTest);  

intTest 是输入字节的糟糕名称。没有关于它的 'test'。我会称之为 ib.