На вашем сервере это происходит на на каждой итерации цикла :
if (clientSentence.contains("BREW")) {
outToClient.println("Message: " + clientSentence);
outToClient.println("HTCPCP-new 200 OK BREW START command completed.");
outToClient.println("Content-length: " + clientSentence.length());
outToClient.println("@@");
outToClient.flush();
} else {
outToClient.println("Message: " + clientSentence);
outToClient.println("HTCPCP-new 400 Bad Request.");
outToClient.println("Content-length: " + clientSentence.length());
outToClient.println("@@");
outToClient.flush();
}
Таким образом, сервер будет читать «BREW» (и т. Д.), А затем выплевывать всеэтот вывод, заканчивающийся @@.Ваш клиент отображает все это, а затем запрашивает следующий ввод ... но сервер не завершит отправку, потому что он прочитает строку ввода next , которая является «началом».Затем он печатает этот второй ответ, даже если он все еще читает первый запрос.
Я предлагаю вам закончить чтение запроса , затем записать ответ ...
Обратите внимание, что ваш входной цикл также должен иметь исключительную верхнюю границу:
for (int i = 0; i <= clientInputLine.length; i++) {
...
// This will blow up if i == clientInputLine.length
clientInputLine[i].append(clientSentence);