Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Передача клиенту бинарных данных через TCP
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
Гость_Андрей_*
Как передать ветктор данных double через TcpSocket, если на приемная сторона принимает следующим образом
sokstream->Read(&ChisloElement,sizeof(double));
sokstream->Read(&dTemp[0],(int)(ChisloElement*sizeof(double)));

ssoft
Цитата(Гость_Андрей_* @ 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 ) );
Гость
Спасибо
ssoft
Нажимае кнопку "Спасибо"
:hi:
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2020 IPS, Inc.