1. Дали задание сделать клиент и сервер на Qt, задание сделал и после его отправки, мне ответили, что использование QTcpServer нежелательно, а как делать иначе не знаю (предполагаю, через QTcpSocket), впервые использую Qt для чего либо, поэтому делал по примерам, найденным в сети, а там везде QTcpServer, почему так, если это плохо?
2. Также в задании предполагалась обработка нескольких соединений одновременно, у меня же получается только одно, более того, при подключенном клиенте, если подключится ещё один, начинается какая то вакханалия с передачей данных - второму подключению вместо слова для поиска передаётся часть текста из файла первого, после чего второй переходит в ожидание, пока первый не освободится. В самом начале, когда делал по примеру, предполагал, что такая реализация сервера будет обрабатывать сразу несколько соединений, но оказалось не так, хотел добавить форки, но не стал, подумал это будет не совсем правильно, а правильным будет добавить потоки (QThread), так ли это? Если да, то как это лучше сделать, чтобы не исправлять всё полностью? Если нет, то какой подход лучше использовать?
3. В клиентском clientwindow.cpp в конструкторе я попытался задать регулярные выражения, чтобы word_for_searching не давал вводить недопустимые символы, только буквы и цифры, но, опять-таки, то как это описано в примерах, не сработало, приложение сразу закрывается, хотя всё логично и компилятор не выдаёт предупреждений и ошибок. Что не так?
4. В clientwindow.cpp есть функция loading, её задача показывать анимацию загрузки на экране загрузки из-за неё всё повисает при подключении или анимация вовсе не работает, я подозреваю это тоже нужно делать через потоки?
5. Нужно подсчитать количество слов в файле - когда я передаю файл от клиента серверу есть возможность на сервере сразу вести подсчёт, миную фазу записи в файл, а потом его открытие, считывание и закрытие. Так вот с этим 2 вопроса:
5.1 Если переводить QByteArray в строку, также надо будет париться о том, чтобы очередное слово было полным и уже потом считать, а иначе дочитывать из сокета дополнительные данные, это не будет дольше или займёт такое же количество времени, как если бы я работал с файлом, к тому же из файла можно читать пословно до пробела?
5.2 Как сделать проверку очередного полученного QByteArray на принадлежность к отдельному слову? И как считывая из файла игнорировать спецсимволы? А то, допустим, в тексте «Улыбок тебе, дед макар.» «тебе,» и «макар.» будут интерпретированы, как слова, а если будут пропущены пробелы после точек и запятых, это вообще получится одно большое слово. Я хотел добавить закрытую функцию, которая бы проверяла очередное слово на отсутствие символов точек, запятых и т.д., но вдруг есть более простое решение экономящее время.