Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вотрос о передаче текста через TCP сокет
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
fsMark
Передаю строку клиенту при помощи такой прцедуры:
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
Встречный вопрос, а зачем тебе от него избавлять?
На другой стороне читай так же как и пишешь из QDataStream с версией и все.

Иначе используй qint64 QIODevice::write ( const QByteArray & byteArray ).
fsMark
На другом конце работает не мой клиент а приложение типа телнета, оно получает целиком все что передали и анализирует.
Тоесть будут передоваться короткие тестовые команды.

А можно насчет "иначе используй qint64 QIODevice::write ( const QByteArray & byteArray )" можно поподробней, а чтото я не воткнул))
ViGOur
Извини, был не внимателен, по всей видимости не проснулся тогда. :)
Нужно использовать qint64 QIODevice::write ( const char * data, qint64 maxSize )
А именно сделать примерно так:
QByteArray arrBlock= str.toAscii();
pSocket->write( arrBlock, arrBlock.length());
fsMark
Спасибо, вроде разобрался))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2019 IPS, Inc.