Да действитеьно, пока сокет читает данные, другой ждет его завершения. Как запихнуть сокет в свой поток? В примере ThreadFortuneServer сокет создается в потоке, отвечает и сразу закрывает соединение, как продолжить работу, я не соображу

UPD: нужно всего-навсего в конце метода run указать this->exec(); и, конечно-же, при закрытии сокета финишировать поток.