Russian Qt Forum

Qt => Общие вопросы => Тема начата: Noize_programmer от Февраль 16, 2023, 14:45



Название: при отправке сообщения сервер закрывается(Tcp_Network)
Отправлено: Noize_programmer от Февраль 16, 2023, 14:45
решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено
решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено
решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено
решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено        решено

git:
server:https://github.com/SpeechKingV/Tcp_server (https://github.com/SpeechKingV/Tcp_server)
client:https://github.com/SpeechKingV/Tcp_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 (https://ru.wikipedia.org/wiki/SIGSEGV)


Название: Re: при отправке сообщения сервер закрывается(Tcp_Network)
Отправлено: kambala от Февраль 16, 2023, 15:43
настрой отладчик чтоб работал у тебя, через него сразу найдешь в каком месте проблема


Название: Re: при отправке сообщения сервер закрывается(Tcp_Network)
Отправлено: Noize_programmer от Февраль 16, 2023, 18:29
настрой отладчик чтоб работал у тебя, через него сразу найдешь в каком месте проблема
как настроить(с отладчиком в Qt почти незнаком)


Название: Re: при отправке сообщения сервер закрывается(Tcp_Network)
Отправлено: kambala от Февраль 16, 2023, 23:31
не знаю, почитать документацию / поискать в интернете. отладчик к собственно Qt не имеет отношения.


Название: Re: при отправке сообщения сервер закрывается(Tcp_Network)
Отправлено: Noize_programmer от Февраль 18, 2023, 15:40
не знаю, почитать документацию / поискать в интернете. отладчик к собственно Qt не имеет отношения.
вот отладка1:
этого файла нет в пректе


Название: Re: при отправке сообщения сервер закрывается(Tcp_Network)
Отправлено: Noize_programmer от Февраль 18, 2023, 15:41
не знаю, почитать документацию / поискать в интернете. отладчик к собственно Qt не имеет отношения.
вот отладка2:


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


Название: Re: при отправке сообщения сервер закрывается(Tcp_Network)
Отправлено: Noize_programmer от Февраль 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 пока не разберусь с этим, да и ктому же это и полезно)


Название: Re: при отправке сообщения сервер закрывается(Tcp_Network)
Отправлено: tux от Февраль 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 но общие принципы не поменялись.

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


Название: Re: при отправке сообщения сервер закрывается(Tcp_Network)
Отправлено: Noize_programmer от Февраль 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 но общие принципы не поменялись.

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