Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT3]QSocket, передача структуры строк


Автор: V1rus 28.10.2009, 19:02
Всем доброе время суток. Вопрос следующего плана. Надо передать структуру через сокет. Я передавал строки, цифры, байты, всё было ок, а вот со структурой борода какая то. Структуру копирую в QByteArray(предварительно сделав ему resize) а его уже передаю, на принимающей стороне алгоритм обратный, но в стуктуре нулевые или пустые строки. При том если тестить это на локальной машине(connectToHost("localhost", port)) то данный передаются нормально, если к другой машине коннектишся то всё плохо. Могу предположить что это из за выравнивания структуры компилятором, но как с этим бороться не знаю, такие дерективы как __unaligment не работают почему то. Подскажите кто сталкивался или просто знает как корректно ее передать.

Автор: Artemon 28.10.2009, 19:11
Код

#pragma pack(1)

struct STest
{
  BYTE Data;
  WORD Data1;
};

#pragma pack()

Автор: korbian 29.10.2009, 09:34
или так
Код

#ifdef MSVC  // не уверен, что именно так называется константа :)
#pragma pack(1) 
#define __attribute__(...) 
#endif
struct __attribute__ ((packed)) STest
{
  BYTE Data;
  WORD Data1;
} ;
#ifdef MSVC
#pragma pack()
#endif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)