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

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

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

Автор: fsMark 23.4.2008, 0:26

Передаю строку клиенту при помощи такой прцедуры:

CODE
sendToClient(QTcpSocket* pSocket, const QString& str)
{
QByteArray arrBlock;
QDataStream out(&arrBlock, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_2);
out << str;
pSocket->write(arrBlock) ;
}

Строка передаеться почти нормально, только первый позиции добавляеться число... вроде как длина.
Вопрос такой как можно от этого числа избавиться?

Автор: ViGOur 23.4.2008, 7:51

Встречный вопрос, а зачем тебе от него избавлять?
На другой стороне читай так же как и пишешь из QDataStream с версией и все.

Иначе используйhttp://crossplatform.ru/documentation/qtdoc4.3/qiodevice.php#write-2.

Автор: fsMark 23.4.2008, 15:13

На другом конце работает не мой клиент а приложение типа телнета, оно получает целиком все что передали и анализирует.
Тоесть будут передоваться короткие тестовые команды.

А можно насчет "иначе используй qint64 QIODevice::write ( const QByteArray & byteArray )" можно поподробней, а чтото я не воткнул))

Автор: ViGOur 23.4.2008, 16:00

Извини, был не внимателен, по всей видимости не проснулся тогда. :)
Нужно использовать http://crossplatform.ru/documentation/qtdoc4.3/qiodevice.php#write
А именно сделать примерно так:

QByteArray arrBlock= str.toAscii();
pSocket->write( arrBlock, arrBlock.length());

Автор: fsMark 23.4.2008, 16:05

Спасибо, вроде разобрался))

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