Официальный форум СВД Встраиваемые Системы
03 Декабря, 2016, 05:27:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: udp в QNX 6.5.0  (Прочитано 421 раз)
_Cepera_
Пользователь

Сообщений: 38


« : 17 Декабря, 2015, 14:33:20 »

Появилась проблема, Установлен QNX6.5.0 на vmware. В qt 5.5.0 С помощью QUdpSocket делаю коннект, проходит нормально, ошибок не выдает, но когда делаю writedatagram то выдает ошибки, скриншот приложил снизу. Хотел спросить, нужно делать какие то предварительные настройки на QNX, или это связано с чем то другим?

« Последнее редактирование: 17 Декабря, 2015, 14:36:22 от _Cepera_ » Записан
Олег Большаков
Администратор
Житель форума

Сообщений: 2929



WWW
« Ответ #1 : 18 Декабря, 2015, 17:13:45 »

К сожалению, по скриншоту не очень понятно, как используется QUdpSocket. Прошу Вас подготовить небольшой рабочий пример проекта с QUdpSocket, который иллюстрирует проблему, и переслать его нам на адрес технической поддержки.
Записан

Андрей Докучаев
Сотрудник СВД ВС
Ветеран

Сообщений: 651



WWW
« Ответ #2 : 18 Декабря, 2015, 18:13:52 »

Я бы предположил, судя по логу, что код пытается непрерывно коннектиться невзирая на уже существующее соединение.
Записан

_Cepera_
Пользователь

Сообщений: 38


« Ответ #3 : 20 Декабря, 2015, 17:00:34 »

Сейчас нет возможности выложить код проекта, но там все по стандарту, делается подключение через socketconnect(адрес сервера, порт) и отправляется через udpwrite.  Отправка сообщения получается шла сразу после подключения и когда я решил попробовать сделать задержку в 1 секунду после подключения, этой ошибки больше не было, сообщение отправляется, но походу из за того что виртуальная машина не настроена, сообщение не приходит на сервер. Может что то посоветуете проверить? Код могу завтра выложить. Если запускать не на qnx то все работает
« Последнее редактирование: 20 Декабря, 2015, 17:39:40 от _Cepera_ » Записан
Олег Большаков
Администратор
Житель форума

Сообщений: 2929



WWW
« Ответ #4 : 20 Декабря, 2015, 22:29:27 »

Код всего проекта не нужен. Желательно кусочек отвечающий за UDP, который самостоятельно собирается.
Записан

_Cepera_
Пользователь

Сообщений: 38


« Ответ #5 : 21 Декабря, 2015, 12:53:05 »

//Поток
void CChannelThread :: run()
{
    while(flag)
    {
        if (connection)
        {
            emit connectCH();
            connection = false;
        }
    }
    return;
}
void CChannelThread :: stop()
{
    flag = false;
    deleteLater();
}

//Создаю наследника для соединения.
CSocketThread :: CSocketThread(CSocket * _csocket)
    : CChannelThread(false, _csocket->dataList->module)
{
    csocket = _csocket;
    err = false;
    connect(csocket->udpSocket, SIGNAL(connected()), this, SLOT(connected()));
    connect(this, SIGNAL(connectTrue(quint32)), csocket, SLOT(socketConnected(quint32)));
    connect(this, SIGNAL(connectFalse(quint8)), csocket, SLOT(connectedFalse(quint8)));
    connect(csocket->udpSocket, SIGNAL(error(QAbstractSocket::SocketError)) , this, SLOT(socketError()));
    connect(this, SIGNAL(connectCH()), this, SLOT(socketConnect()));
    timer->start(_csocket->dataList->module->connectProc.maxTime);
    time->start();
    connection = true;
}
void CSocketThread :: socketConnect() // соединение
{
    csocket->udpSocket->connectToHost(csocket->serverAddress, csocket->serverPort);
//Если соединение выполняется успешно, то приходит сигнал с CSoket и выполняется функция stop()
}
void CSocketThread :: socketError()
{
    err = true;
    socketConnect();
}
void CSocketThread :: timeout()
{
    timer->stop();
    if (!err)
        emit connectFalse(1);
    else
        emit connectFalse(2);

    stop();
}

//Отправка сообщения
void CSocket :: udpWrite (QByteArray message, QHostAddress ha, quint16 port)
{
    QDataStream out(&message, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_5_5);
    udpSocket->writeDatagram(message, ha, port);
    MessageList * mdl = dataList->module->messageDataList;
    mdl->append (Name, ha, port, QTime::currentTime(), 1, message);

}
« Последнее редактирование: 21 Декабря, 2015, 21:04:34 от _Cepera_ » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2016 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 27 Сентября, 2016, 22:47:22