Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Принять ASCII строку по TCP 
:(
    Опции темы
nullpoint
Дата 9.7.2014, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 4.6.2013

Репутация: нет
Всего: нет



Всем привет. Клиент отправляет массив байт: 1й байт - код команды, следующие 10 байт - идентификатор с \0, следующие 10 байт - комментарий с \0. Для примера формирую данный массив вот так:
Код

QByteArray outData;
//код команды
outData += 1; 
//идентификатор
outData += 8; outData += 8; outData += 8; outData += 8; outData += 8;
outData += 8; outData += 8; outData += 8; outData += 8; outData += 8;
outData += '\0';
//комментарий
outData += 3; outData += 3; outData += 3; outData += 3; outData += 3;
outData += 3; outData += 3; outData += 3; outData += 3; outData += 3;
outData += '\0';


Соответственно на сервере принимаю:
Код

    QByteArray input;
    input = clientSocket->readall();
    int position;
    QByteArray id, comm;
    if ( input.at(0) == 0x01 )
    {
        position = 1;
        input.remove( 0, position );
        position = input.indexOf( '\0' );
        id = input.left( position );
        input.remove( 0, position );
        position = input.indexOf( '\0' );
        comm = input.left( position );
    }


Как мне теперь сравнить полученный id с идентификатором из базы, т.е
Код

if ( id == idBase )
   //выполняем действия

idBase хранится в базе данных как varchar. К какому типу мне нужно преобразовать QByteArray id, чтобы реализовать это? И как можно это проще реализовать?
PM MAIL   Вверх
CompWorm
Дата 10.7.2014, 03:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: нет
Всего: 31



я бы сравнивал как два массива (const char *)... 



--------------------
PM MAIL   Вверх
math64
Дата 11.7.2014, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Если к базе данных обращаешься через Qt, строки нужно преобразовать в QString, используя правильный кодек.
Для удобства обработки команд можно использовать структуру
Код

struct CommandData {
char code;
char id[11];
char comment[11];
};

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0768 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.