LINUX.ORG.RU

Сервер на Qt

 ,


1

2

В качестве «затравки» взял вот это код (Multiple Clients):
http://www.cs.fredonia.edu/hansen/CSIT224/Client_Server.htm
В качестве клиента использую telnet.
Коннект отрабатывает.
При вводе чего-то с переводом каретки вызывается ф-ция echo();
Однако ds >> text; оставляет text пустым.
Отправка в клиент изменённого text (блок else) тоже не вызывает никакой видимой реакции.
Может Qt-шные сокеты что-то делают хитрое и работают только между собой?
Кто щупал? В чём может быть беда?

★★☆

Вместо DataStream можно попробовать QTcpSocket::readAll и вывод этого барахла в лог на сервере.

Писал сервера на Qt, все работало отлично.

trex6 ★★★★★
()
Последнее исправление: trex6 (всего исправлений: 1)
Ответ на: комментарий от trex6

Заработало, спасибо.
Всегда меня поражало почему в плюсах всё, что работает с << или >>, работает через жопу.

Stahl ★★☆
() автор топика
Ответ на: комментарий от Stahl

Я подозреваю, что просто вы что-то сделали неверно. Кресты, они хоть и сложные, но абсолютно логичные и предсказуемые, если хорошо со стандартом знаком.

trex6 ★★★★★
()
Ответ на: комментарий от trex6

что-то сделали неверно

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

Stahl ★★☆
() автор топика
Ответ на: комментарий от Stahl

Всегда меня поражало почему в плюсах всё, что работает с << или >>, работает через жопу.

потому что есть такое понятие как буферизация, но не все дано это понять.

SandySandy
()
Ответ на: комментарий от SandySandy

Уважаемый, а расскажите нам, как буфферизация могла повлиять на тестирование с использованием telnet?

trex6 ★★★★★
()

QDataStream записывает размер пакета перед данными. А telnet нет. Видимо, вы этого не учли.

P.S. в документации, кстати, про это ни слова.

Adonai ★★★
()
Последнее исправление: Adonai (всего исправлений: 2)
Ответ на: комментарий от nanoolinux

Спасибо, не знал этого.

Вообще, QDataStream, насколько я понял, больше подходит для обмена данными между двумя Qt-приложениями.

Adonai ★★★
()
Ответ на: комментарий от Adonai

Да, хотя я разок пересылал QByteArray через тсп в erlang vm. Если в нём указать {packet, 4} в опициях, то правила сериализации будут те же самые, но только если QByteArray не пуст.

nanoolinux ★★★★
()
Ответ на: комментарий от Stahl

Я ж тебе говорил, что между текстовым и бинарными данными при записи в файл ох. разнца. QTextStream. Это чисто твои личные проблемы, начни читать книги.

frozenix ★★★
()

fstream

Я даже тебе линк дам, на твои пляски на одних и тех же граблях.

frozenix ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.