crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Вотрос о передаче текста через TCP сокет, Проблема с первым символом
fsMark
  опции профиля:
сообщение 23.4.2008, 0:26
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 23.4.2008
Из: г. Киров
Пользователь №: 155

Спасибо сказали: 10 раз(а)




Репутация:   1  


Передаю строку клиенту при помощи такой прцедуры:
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) ;
}

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

Сообщение отредактировал fsMark - 23.4.2008, 15:04
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 23.4.2008, 7:51
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


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

Иначе используй qint64 QIODevice::write ( const QByteArray & byteArray ).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fsMark
  опции профиля:
сообщение 23.4.2008, 15:13
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 23.4.2008
Из: г. Киров
Пользователь №: 155

Спасибо сказали: 10 раз(а)




Репутация:   1  


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

А можно насчет "иначе используй qint64 QIODevice::write ( const QByteArray & byteArray )" можно поподробней, а чтото я не воткнул))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 23.4.2008, 16:00
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Извини, был не внимателен, по всей видимости не проснулся тогда. :)
Нужно использовать qint64 QIODevice::write ( const char * data, qint64 maxSize )
А именно сделать примерно так:
QByteArray arrBlock= str.toAscii();
pSocket->write( arrBlock, arrBlock.length());
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fsMark
  опции профиля:
сообщение 23.4.2008, 16:05
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 23.4.2008
Из: г. Киров
Пользователь №: 155

Спасибо сказали: 10 раз(а)




Репутация:   1  


Спасибо, вроде разобрался))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 9:44