Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ Передача клиенту бинарных данных через TCP

Автор: Гость_Андрей_* 13.9.2011, 11:52

Как передать ветктор данных double через TcpSocket, если на приемная сторона принимает следующим образом
sokstream->Read(&ChisloElement,sizeof(double));
sokstream->Read(&dTemp[0],(int)(ChisloElement*sizeof(double)));


Автор: ssoft 14.9.2011, 12:41

Цитата(Гость_Андрей_* @ 13.9.2011, 12:52) *
Как передать ветктор данных double через TcpSocket, если на приемная сторона принимает следующим образом
sokstream->Read(&ChisloElement,sizeof(double));
sokstream->Read(&dTemp[0],(int)(ChisloElement*sizeof(double)));


Наверное приемная сторона принимает так

sokstream->Read(&ChisloElement,sizeof(int));
sokstream->Read(&dTemp[0],(int)(ChisloElement*sizeof(double)));

В данном случае, можно

QTcpSocket * socket;
QVector< double > array;

...

QDataStream stream (socket);
// возможно, нужно сменить порядок байт
//по умолчанию Qt использует BigEndian
stream.setByteOrder( LittleEndian ); // нужно знать порядок байт принимающей стороны, здесь принимается LittleEndian
stream << array;


либо, если так не прокатит, то можно записать напрямую (что не очень хорошо), без использования QDataStream.

int count = array.count();
socket->write( &count, sizeof( count ) );
socket->write( array.constData(), count * sizeof( double ) );

Автор: Гость 15.9.2011, 8:30

Спасибо

Автор: ssoft 19.9.2011, 8:46

Нажимае кнопку "Спасибо"
:hi:

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)