Russian Qt Forum
Июль 22, 2024, 14:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: при отправке сообщения сервер закрывается(Tcp_Network)  (Прочитано 7400 раз)
Noize_programmer
Чайник
*
Offline Offline

Сообщений: 91


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


Просмотр профиля WWW
« : Февраль 16, 2023, 14:45 »

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

сервер закрывается, а в выводе строки кторая появляется если закрыть программу через деспетчер задач:

14:54:12: Запускается 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 ...
14:54:37: Программа неожиданно завершилась.
14:54:37: Процесс был завершён принудительно.
14:54:37: 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 аварийно завершился.

и есть полученый сигнал при дебаге сервера:
Wiki:https://ru.wikipedia.org/wiki/SIGSEGV
« Последнее редактирование: Февраль 20, 2023, 17:01 от Noize_programmer » Записан

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

Сообщений: 4741



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

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

Изучением 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
« Ответ #2 : Февраль 16, 2023, 18:29 »

настрой отладчик чтоб работал у тебя, через него сразу найдешь в каком месте проблема
как настроить(с отладчиком в Qt почти незнаком)
Записан

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

Сообщений: 4741



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

не знаю, почитать документацию / поискать в интернете. отладчик к собственно 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
Noize_programmer
Чайник
*
Offline Offline

Сообщений: 91


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


Просмотр профиля WWW
« Ответ #4 : Февраль 18, 2023, 15:40 »

не знаю, почитать документацию / поискать в интернете. отладчик к собственно Qt не имеет отношения.
вот отладка1:
этого файла нет в пректе
Записан

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

Сообщений: 91


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


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

не знаю, почитать документацию / поискать в интернете. отладчик к собственно Qt не имеет отношения.
вот отладка2:
Записан

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

Сообщений: 404



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

Ну, падает то понятно почему.
В строке
QTcpSocket* pClientSoket = m_ptcpServer->nextPendingConnection();
неплохо бы проверять указатель, прежде чем использовать.
У вас pClientSoket получается нулевым - понятно, что всё упадёт.
Об этом даже в мануале написано "nullptr is returned if this function is called when there are no pending connections."
Записан

Noize_programmer
Чайник
*
Offline Offline

Сообщений: 91


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


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

Ну, падает то понятно почему.
В строке
QTcpSocket* pClientSoket = m_ptcpServer->nextPendingConnection();
неплохо бы проверять указатель, прежде чем использовать.
У вас pClientSoket получается нулевым - понятно, что всё упадёт.
Об этом даже в мануале написано "nullptr is returned if this function is called when there are no pending connections."

и что с этим делать?
проинецелизировать еденицей?

(начал писать сервер чисто на с++ в visual studio пока не разберусь с этим, да и ктому же это и полезно)
« Последнее редактирование: Февраль 18, 2023, 16:18 от Noize_programmer » Записан

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

Сообщений: 404



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

Ну, падает то понятно почему.
В строке
QTcpSocket* pClientSoket = m_ptcpServer->nextPendingConnection();
неплохо бы проверять указатель, прежде чем использовать.
У вас pClientSoket получается нулевым - понятно, что всё упадёт.
Об этом даже в мануале написано "nullptr is returned if this function is called when there are no pending connections."

и что с этим делать?
проинецелизировать еденицей?

(начал писать сервер чисто на с++ в visual studio пока не разберусь с этим, да и ктому же это и полезно)
Проверять, конечно. Например:
QTcpSocket* pClientSoket = m_ptcpServer->nextPendingConnection();
if (pClientSoket == nullptr)
{
 // ничего не делаем и выходим из функции
 return;
}

В интернете куча примеров TCP сервера и клиента.
Например
https://doc.qt.io/qt-6/qtnetwork-fortuneserver-example.html
и
https://doc.qt.io/qt-6/qtnetwork-threadedfortuneserver-example.html
Правда это для Qt6 но общие принципы не поменялись.

А, вообще, лучше бы, конечно, просто подучить сам ЯП.
Записан

Noize_programmer
Чайник
*
Offline Offline

Сообщений: 91


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


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

Ну, падает то понятно почему.
В строке
QTcpSocket* pClientSoket = m_ptcpServer->nextPendingConnection();
неплохо бы проверять указатель, прежде чем использовать.
У вас pClientSoket получается нулевым - понятно, что всё упадёт.
Об этом даже в мануале написано "nullptr is returned if this function is called when there are no pending connections."

и что с этим делать?
проинецелизировать еденицей?

(начал писать сервер чисто на с++ в visual studio пока не разберусь с этим, да и ктому же это и полезно)
Проверять, конечно. Например:
QTcpSocket* pClientSoket = m_ptcpServer->nextPendingConnection();
if (pClientSoket == nullptr)
{
 // ничего не делаем и выходим из функции
 return;
}

В интернете куча примеров TCP сервера и клиента.
Например
https://doc.qt.io/qt-6/qtnetwork-fortuneserver-example.html
и
https://doc.qt.io/qt-6/qtnetwork-threadedfortuneserver-example.html
Правда это для Qt6 но общие принципы не поменялись.

А, вообще, лучше бы, конечно, просто подучить сам ЯП.
спасибо большое сервер не закрывается
« Последнее редактирование: Февраль 18, 2023, 17:36 от Noize_programmer » Записан

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


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