Russian Qt Forum
Ноябрь 23, 2024, 03:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: программа зависает (Tcp network)  (Прочитано 8840 раз)
Noize_programmer
Чайник
*
Offline Offline

Сообщений: 91


работает не трогай


Просмотр профиля WWW
« : Февраль 11, 2023, 13:30 »

решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решенорешено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решенорешено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решенорешено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено
git:
client:https://github.com/SpeechKingV/Tcp_Client
server:https://github.com/SpeechKingV/Tcp_server


client вывод сборки:

13:27:52: Выполняются этапы для проекта TCP_client...
13:27:52: Настройки не изменились, этап qmake пропускается.
13:27:52: Запускается: «F:\Qt5.14\Tools\mingw730_64\bin\mingw32-make.exe» -j6
F:/Qt5.14/Tools/mingw730_64/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'F:/Qt_project/5.0.2/lesons/Book/TCP_client/build-TCP_client-Desktop_Qt_5_12_12_MinGW_64_bit-Debug'
mingw32-make[1]: Nothing to be done for 'first'.
mingw32-make[1]: Leaving directory 'F:/Qt_project/5.0.2/lesons/Book/TCP_client/build-TCP_client-Desktop_Qt_5_12_12_MinGW_64_bit-Debug'
13:27:54: Процесс «F:\Qt5.14\Tools\mingw730_64\bin\mingw32-make.exe» завершился успешно.
13:27:54: Прошло времени: 00:01.

server вывод сборки:

13:27:53: Запускается F:\Qt_project\5.0.2\lesons\Book\TCP_server\build-TCP_server-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\TCP_server.exe ...
13:28:43: F:\Qt_project\5.0.2\lesons\Book\TCP_server\build-TCP_server-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\TCP_server.exe завершился с кодом 0

« Последнее редактирование: Февраль 16, 2023, 14:35 от Noize_programmer » Записан

Официальная стандартизация языка с++ началась в 1998 году, когда был опубликован стандарт языка ISO/IEC 14882:1998(известный как C++98), разработанный комитетом по стандартизации C++(ISO/IEC JTC1/SC22/WG21 working group)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Февраль 11, 2023, 13:58 »

вот тут как раз нужен не вывод сборки, а вывод приложения (для сервера ты именно его выложил Улыбающийся ). По выводу сервера видно, что он не зависает, а завершается без ошибок (код 0). Значит клиент зависает?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Февраль 11, 2023, 14:11 »

можно попробовать добавить socket->waitForBytesWritten(500) после socket->write(...) для синхронного ожидания отправки данных.

- файл с расширением user не надо класть в репозиторий, почитай про игнорирование файлов в гите (файл .gitignore)
- в клиенте метод SError() никогда не будет вызван, подумай почему (в выводе программы должна быть подсказка)
- на пробелах экономить не надо (вызовы connect)
- написание слова socket в двух вариациях (и обе ошибочны) — это нечто Улыбающийся прививай себе культуру написания кода, в будущем это поможет не только тебе, но и тем, кто будет читать твой код
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #3 : Февраль 11, 2023, 19:00 »

Можно попробовать убрать опцию -j6 и пересобрать проекты. У меня случалось, что при такой сборке программы сбоили, с тех пор я ее никогда не использую.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #4 : Февраль 11, 2023, 19:07 »

Эта опция имеет смысл, если вы собираете либо мегабольшой проект либо набор проектов. При сборке мира ещё имеет смысл (если вы джентушник, как я  Улыбающийся)
При одиночном небольшом проекте лучше собирать в один поток.
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Февраль 11, 2023, 19:35 »

вот это поворот Улыбающийся ни разу еще не ловил проблем из-за этого
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #6 : Февраль 11, 2023, 19:41 »

Не я один. В сети есть предположения, что make ошибается с зависимостями при многопоточной сборке.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #7 : Февраль 11, 2023, 19:45 »

вот это поворот Улыбающийся ни разу еще не ловил проблем из-за этого
Мало собираете, видимо. Или не линуксоид. Улыбающийся
Иногда пакеты мира могут не собраться именно из-за многопоточной сборки. Логика в том, что зависимый объектный файл может начать собираться позже, чем необходимо. Ошибка странная, если опыта не имеешь - вообще не понимаешь, что происходит. Стоит поставить -j1 - все собирается уже нормально.
« Последнее редактирование: Февраль 11, 2023, 20:08 от tux » Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Февраль 11, 2023, 20:36 »

ну «миры» не собираю, конечно, но при сборке той же Qt ни разу на такое не напарывался

а мэйк же на всех платформах одинаковый Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #9 : Февраль 11, 2023, 21:18 »

ну «миры» не собираю, конечно, но при сборке той же Qt ни разу на такое не напарывался

а мэйк же на всех платформах одинаковый Улыбающийся
Проблема не в "мэйке" Улыбающийся Допустим ваше приложение состоит из 100500 плагинов, каждый из которых собирается на базе предыдущего (что-то типа наследования). При однопоточной сборке всё будет прекрасно. А вот при многопоточной будут проблемы. Если сильно интересно, можно поискать на форумах gentoo - там встречаются иногда ошибки совершенно иррациональные. Да, так программу лучше не строить,но если хочется, то можно. Веселый
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #10 : Февраль 11, 2023, 21:31 »

вполне может быть проблема именно мэйка, а какие-нибудь более умные сборщики типа ниндзи могут обрабатывать подобные ситуации (не утверждаю, что это действительно так)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #11 : Февраль 11, 2023, 21:53 »

а какие-нибудь более умные сборщики типа ниндзи могут
И с ними бывают точно такие же проблемы (с ninja точно видел). Проблема то в архитектуре проекта, а не в самом сборщике. Да и есть чуть ли не поколение программистов (в основном на JAVA, конечно), которые могут отдельную функцию положить в отдельный класс, потом все 100500 файлов положить в один проект.
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #12 : Февраль 11, 2023, 23:07 »

я подумал, речь конкретно о сборщике при правильной архитектуре Улыбающийся так-то конечно, любой сборщик упадет.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Noize_programmer
Чайник
*
Offline Offline

Сообщений: 91


работает не трогай


Просмотр профиля WWW
« Ответ #13 : Февраль 12, 2023, 10:14 »

вот тут как раз нужен не вывод сборки, а вывод приложения (для сервера ты именно его выложил Улыбающийся ). По выводу сервера видно, что он не зависает, а завершается без ошибок (код 0). Значит клиент зависает?
да зависает клиент

вывод приложения клиент:
10:11:22: Запускается F:\Qt_project\5.0.2\lesons\Book\TCP_client\build-TCP_client-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\TCP_client.exe ...
10:11:25: Не удалось получить отладочный вывод.
10:13:35: Программа неожиданно завершилась.
10:13:35: Процесс был завершён принудительно.
10:13:35: F:\Qt_project\5.0.2\lesons\Book\TCP_client\build-TCP_client-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\TCP_client.exe аварийно завершился.

вывод приложения сервер:
10:11:22: Запускается F:\Qt_project\5.0.2\lesons\Book\TCP_server\build-TCP_server-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\TCP_server.exe ...
10:13:44: F:\Qt_project\5.0.2\lesons\Book\TCP_server\build-TCP_server-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\TCP_server.exe завершился с кодом 0
Записан

Официальная стандартизация языка с++ началась в 1998 году, когда был опубликован стандарт языка ISO/IEC 14882:1998(известный как C++98), разработанный комитетом по стандартизации C++(ISO/IEC JTC1/SC22/WG21 working group)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #14 : Февраль 12, 2023, 11:17 »

запустил у себя: так у тебя зависает (при запуске) из-за бесконечного цикла в SReadyRead(), судя по всему (смог лишь раз воспроизвести). можешь в этом удостовериться, запустив с отладкой (кнопка зеленого треугольника с жучком) и нажав на паузу во время зависания: отладчик покажет в каком месте кода находятся все потоки приложения.

отправка сообщения с клиента роняет сервер, проблема в строке myserver.cpp:64 (вероятно сокет является нулевым указателем).

P.S. сигнала returnPresed не существует, об этом сказано в выводе приложения.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.06 секунд. Запросов: 23.