Надо передать строку по сети, Помогите с реализацией |
Здравствуйте, гость ( Вход | Регистрация )
Надо передать строку по сети, Помогите с реализацией |
sibmail |
31.3.2009, 12:40
Сообщение
#1
|
Студент Группа: Участник Сообщений: 63 Регистрация: 20.3.2009 Пользователь №: 626 Спасибо сказали: 0 раз(а) Репутация: 0 |
Надо передать строку по сети другому приложению (не Qt), чтобы на другом конце получили строковые данные, а не бинарные
Был пример QByteArray arrBlock; QDataStream out(&arrBlock, QIODevice::WriteOnly); //out.setVersion(QDataStream::Qt_4_2); out << quint16(0) << lineEdit->text(); out.device()->seek(0); out << quint16(arrBlock.size() - sizeof(quint16)); m_pTcpSocket->write(arrBlock); Я переделал QDataStream на QTextStream, но никакой передачи не наблюдается. Подскажите что не так и как сделать )) |
|
|
LE0N |
31.3.2009, 12:53
Сообщение
#2
|
Студент Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: 0 |
Цитата out.device()->seek(0); out << quint16(arrBlock.size() - sizeof(quint16)); А с чего ты взял, что у тебя первые два байта заменятся? А не получится в итоге: out << quint16(arrBlock.size() - sizeof(quint16)) << quint16(0) << lineEdit->text(); |
|
|
sibmail |
31.3.2009, 12:57
Сообщение
#3
|
Студент Группа: Участник Сообщений: 63 Регистрация: 20.3.2009 Пользователь №: 626 Спасибо сказали: 0 раз(а) Репутация: 0 |
Цитата out.device()->seek(0); out << quint16(arrBlock.size() - sizeof(quint16)); А с чего ты взял, что у тебя первые два байта заменятся? А не получится в итоге: out << quint16(arrBlock.size() - sizeof(quint16)) << quint16(0) << lineEdit->text(); я даже не знаю как надо, первый раз с этим... |
|
|
LE0N |
31.3.2009, 13:05
Сообщение
#4
|
Студент Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: 0 |
А ты узнай...
И протокол тоже - узнай. А то ведь можно и quint32 передавать...Скорее всего так оно и есть....Поэтому у тебя ни чего не отображает...в приложении... |
|
|
trdm |
31.3.2009, 13:17
Сообщение
#5
|
Дмитрий Трошин Группа: Участник Сообщений: 575 Регистрация: 12.1.2008 Пользователь №: 68 Спасибо сказали: 21 раз(а) Репутация: 6 |
прежде чем работать с сетью надо покурить рфс-ы.
|
|
|
sibmail |
31.3.2009, 14:51
Сообщение
#6
|
Студент Группа: Участник Сообщений: 63 Регистрация: 20.3.2009 Пользователь №: 626 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
ViGOur |
31.3.2009, 15:02
Сообщение
#7
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
В твоем случае нужно использовать не QDataStream, а QTextStream .
Для лучшего понимания как работать с сетью в Qt посмотри примеры: Fortune Server Example и Fortune Client Example. |
|
|
Litkevich Yuriy |
31.3.2009, 15:13
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
дайте пример хотя бы передачи не двоичных данных а текстовых строк по протоколу TCP посмотри пример Network Chat Exampleтам текстовая строка передается. фрагменты от туда:
|
|
|
sibmail |
1.4.2009, 12:40
Сообщение
#9
|
Студент Группа: Участник Сообщений: 63 Регистрация: 20.3.2009 Пользователь №: 626 Спасибо сказали: 0 раз(а) Репутация: 0 |
передачу я сделал
QByteArray arrBlock; arrBlock=lineEdit->text().toUtf8(); m_pTcpSocket->write(arrBlock); Снифером посмотрел передается как надо. не подскажите с приемом как быть?? |
|
|
LE0N |
1.4.2009, 13:19
Сообщение
#10
|
Студент Группа: Участник Сообщений: 97 Регистрация: 10.3.2009 Из: Беларусь Пользователь №: 604 Спасибо сказали: 0 раз(а) Репутация: 0 |
Ну и где в этом, что ты сделал передаётся длина строки?
Цитата ни че курить не надо, я программил на других языках не плохо и работу с сетью также. Да яяя, да яяя, да попой на ежа..... |
|
|
Текстовая версия | Сейчас: 24.11.2024, 10:52 |