Название: TcpSocket в состоянии подключения но сообщения не приходят Отправлено: SektorCT от Январь 07, 2023, 19:31 Всем привет.
Столкнулся с такой проблемой, если сервер и клиент, сервер запускаю и подключаю клиента. Сообщения и состояние совета дает выпис QAbstractSocket::ConnectedState Но вот реакцию на сигнал QTcpSocket::readyRead не могу получить. То есть со стороны приента я пытаюсь послать что-то серверу и метод с отправкой вызывается, но у сервера реакции никакой. Дайте пожалуйста какой то совет куда стоит копать для поискать проблемы? Самое интересное что сигнал QTcpSocket::disconnected при отключении клиента срабатывает. Больше суток копаюсь с этим( Название: Re: TcpSocket в состоянии подключения но сообщения не приходят Отправлено: Mikhail от Январь 08, 2023, 11:04 Приведи минимальный пример как не работает.
Название: Re: TcpSocket в состоянии подключения но сообщения не приходят Отправлено: SektorCT от Январь 08, 2023, 21:31 Проблема решена, как оказалось со стороны отправителя не правильно формировались данные.
Из за этого размер данных был 0. Из за этого ничего не уходило на сервер. Название: Re: TcpSocket в состоянии подключения но сообщения не приходят Отправлено: SektorCT от Январь 12, 2023, 23:12 Как оказалось проблема не решилась.
Я попытался отправить на сервер для теста просто строку с текстом, это сработало. Но мне надо отправлять пакет такого вида ""header""message.size""message"" И вот это я уже не могу послать. Ниже часть кода которая отправляет пакет Код: if(m_pBuffNetworkWrite->getSize() > 32) А это сам метод pop который должен отдать пакет Код: uint8_t* BuffNetworkWrite::popUp(int size) Может кто посоветовать в каком направлении искать проблему? Спасибо Название: Re: TcpSocket в состоянии подключения но сообщения не приходят Отправлено: SektorCT от Январь 16, 2023, 21:41 Вопрос закрыт. Оказывается(не знал раньше) метод write с одним аргументом это для простого сообщения, а вот с 2 аргументами это уже для пакетов(мой случай). Так что я добавил второй аргумент и сервер принял сообщение.
Название: Re: TcpSocket в состоянии подключения но сообщения не приходят Отправлено: kambala от Январь 17, 2023, 12:58 да, write с одним параметром const char * ожидает си-строку (нуль-терминированную последовательность символов), об этом сказано в документации
Название: Re: TcpSocket в состоянии подключения но сообщения не приходят Отправлено: __Heaven__ от Январь 17, 2023, 17:09 На будущее, может пригодится. netcat прога есть, она позволяет подключиться к сокету понапосылать в него сообщения. Также она может слушать порт, чтобы к ней уже подключались. Оч советую попробовать
Код: nc -l 4123 # для слушания порта 4123 Код: { cat myfile.txt; sleep 1 } | nc 0.0.0.0 4123 Название: Re: TcpSocket в состоянии подключения но сообщения не приходят Отправлено: SektorCT от Январь 28, 2023, 17:54 Также можно через пайп посылать содержимое файлов (пакетов) Код: { cat myfile.txt; sleep 1 } | nc 0.0.0.0 4123 Спасибо за совет, про данную прогу не знал. Единственное не совсем понимаю из вашего примера как из файла он берет данные и посылает. Или я не так записываю строку. Название: Re: TcpSocket в состоянии подключения но сообщения не приходят Отправлено: __Heaven__ от Январь 28, 2023, 23:48 В моём примере cat читает всё содержимое в консоль (stdout), пайп | перенаправляет stdout в stdin проги nc
sleep тут ради того, чтобы nc не завершился раньше, чем данные придут к принимающий стороне |