Название: помогите с QUdpSocket Отправлено: puh от Ноябрь 09, 2013, 09:48 Приветствую всех.
Накидал приложение на QT 5.1.0, которое общается по Езернету с внешним устройством (плата с ПЛИСкой) с использованием UDP. Код взял с примера. Код: #include "mainwindow.h" Если нажать pushButton_2, то на плату приходит пакет, плата отвечает одной или двумя датаграммами, Qt-приложение принимает эти датаграммы, и все счастливы. НО!! если плата сама инициирует передачу датаграммы в линию, отмечу САМА, а не в ответ на принятые данные, то Qt-приложение ни.. не реагирует. Я уже пробовал с платы передавать в разные моменты, после небольшой паузы после двухстороннего обмена, до него, и нифига. Пакеты, отсылаемые с платы в обоих случаях, абсолютно одинаковые (даже идентификаторы пакетов и контр.суммы одинаковые). Где что попинать, чтобы приложение принимало UDP-пакеты не после отправки своих данных. З.Ы.: в Qt с сетями почти не работал. З.З.Ы.: Когда-то делал два приложения клиент-сервер работающие на разных машинах - проблем не было. сервер и клиент принимали/отправляли данные. Название: Re: помогите с QUdpSocket Отправлено: LisandreL от Ноябрь 09, 2013, 16:09 Логи WireShark'а покажите на всякий случай - вдруг чего не увидели.
Подключение на прямую к компу или через какое-то сетевое оборудование? Логи где снимаете WireShark'ом? На том же компьютере, что и программа работает? Фаервол/брандмауэр имеются/включены? Название: Re: помогите с QUdpSocket Отправлено: puh от Ноябрь 09, 2013, 16:55 Спасибо всем за участие.
Ответ оказался банальным - НЕВНИМАТЕЛЬНОСТЬ. Сто раз все смотрел-пересмотрел, а не увидел разницу в контрольных суммах пакетов, которые передаются из платы в разных ситуациях. В одном случае она равна 0х3c5b, а в другом - 0x3c5d, а я не заметил разницу. Видимо долго сидел и взгляд замылился. Теперь сделал правильные контрольные суммы в обоих случаях и сервак принимает все пакеты. Название: Re: помогите с QUdpSocket Отправлено: LisandreL от Ноябрь 09, 2013, 17:03 Можно было и 0 просто поставить. В udp контрольная сумма не обязательна, ну хотя всё таки хоть какая-то проверка.
Название: Re: помогите с QUdpSocket Отправлено: puh от Ноябрь 09, 2013, 20:16 Да, можно, это я тоже пытался делать, но тогда у меня ничего не вышло, и я решил, что это не работает. Но сейчас я понял, что в то время, когда я ЭТО тестировал, мой проект просто был СЫРОЙ и не вполне работоспособный. Сегодня попробовал снова с НУЛЕВОЙ CRC_UDP и все сработало.
Довольно сложно одному отлаживать одновременно две совершенно разные системы: с одной стороны - плата с ПЛИСкой со своими тараканами, с другой приложение ПК, которое тоже не было отлажено. Название: Re: помогите с QUdpSocket Отправлено: tryx3j16 от Ноябрь 20, 2013, 19:53 Похожая проблема была и у меня......
Очень помогла информация отсюда. Спасибо. |