Название: проблема с QudpSocket::readDatagram Отправлено: Mark_T от Октября 24, 2010, 21:45 Доброго всем времени суток! У меня такая проблема: есть UDP клиент который переводит количество время в количество секунд и раскидывает на трехбайтные слова и отсылает, в принципе работает (проверял сниффером), но для наглядности код такой:
Код: int t=3600*timeHspinBox->value() +60*timeMspinBox->value() + timeSspinBox->value(); функция qsenddata Код: void qsenddata(QString str, char msg[], int n){ проблема в следующем : есть серверная часть (приведу только значимые места кода): Код: struct Forsend { Так вот проблема в том, что данные считываемые в senda.ipdat не всегда соответствуют переданным. Пробовал считывать просто в массив char и в QByteArray, эффект тот же. Есть подозрение что при приеме пакета данные по особому "распаковываются", но некоторые значение времени передаются точно, а некоторые нет. Я в программировании совсем новичок и может здесь куча ошибок. Спасибо заранее. Название: Re: проблема с QudpSocket::readDatagram Отправлено: Mark_T от Октября 25, 2010, 11:30 Проблема разрешилась, и скорее всего связана с моим незнанием С++. Проблема оказалось втом, что при считывани с char в int старший бит воспринимается как знаковый. Устранил это дело следующей вставкой
Код: int t[3]; Если есть код в стиле С++, прошу указать, какой Название: Re: проблема с QudpSocket::readDatagram Отправлено: picobrain от Октября 25, 2010, 18:21 Да, это так, но проблема была не только в старшем байте, но и в двух младших.
Всё дело в машинном представлении знаковых и беззнаковых чисел: Код: #include <stdio.h> Название: Re: проблема с QudpSocket::readDatagram Отправлено: Mark_T от Октября 25, 2010, 18:51 Да уж ). Век живи, как грится. Спасибо
|