В момент закрытия сокета на стороне клиента сервер получает строку нулевой длины. Проверяйте длину принятого сообщения: если 0 - значит клиент спекся.
Гуглить connection gracefully closed, connection reset by peer и ловить соответствующие исключения.