Я реализую простое средство чтения клиент / сервер и использую DataInputStream для чтения всего в байтах, а затем позабочусь о разборе.
Так вот мой код чтения:
String line;
String requestString = "";
//client is a Socket that is initialized elsewhere
DataInputStream inputData = new DataInputStream(client.getInputStream());
byte [] messageByte = new byte[1024];
int counter = 0;
while(true) {
int bytesRead = inputData.read(messageByte, counter, 1024-counter);
counter = (counter + bytesRead)%1024;
if(bytesRead == -1) {
System.out.println("Breaking out of loop");
break;
}
line = new String(messageByte, 0, bytesRead);
System.out.println( "GOT > " + line );
}
Он может читать сообщения, но не может выйти из цикла, потому что последний вызов для чтения не возвращается.