В большинстве протоколов сервер принимает символы типа EOF. Отправьте такой символ вместо закрытия потока.
Например, серверы IRC интерпретируют "\ r \ n" как конец сообщения. Это будет 2 сообщения на одном открытом OutputStream:
PrintStream printStream = new PrintStream(socket.getOutputStream());
printStream.print("JOIN #channel1\r\n");
printStream.flush( );
printStream.print("JOIN #channel2\r\n");
printStream.flush( );
Кроме того, вы должны обернуть свой outputStream в DataOutputStream. Эта обертка создает более переносимый вывод. Обычный OutputStream может вызвать проблемы с некоторыми примитивными типами данных, если сервер и клиент имеют разные компьютерные архитектуры.