Russian Qt Forum

Qt => Работа с сетью => Тема начата: Vexator от Август 21, 2009, 04:25



Название: Корректная передача по TCP
Отправлено: Vexator от Август 21, 2009, 04:25
Подскажите, как грамотно организовать взаимодействие QTcpSocket -> QTcpServer -> QTcpSocket, что бы обеспечить целостность передачи данных?
сейчас я делаю так, данные поступающие на вывод, помещаю в буфер, откуда считываю по одному блоку, отправляю его приемнику, тот получая его, анализирует целостность (по маркеру в конце блока) и отправляет ответ серверу готовность в получении следующего пакета... в случае повреждения пакета, отправляется просьба повторить последную посылку...
имеют ли смысл все эти танцы с бубном?


Название: Re: Корректная передача по TCP
Отправлено: Rcus от Август 21, 2009, 05:07
Это зависит от требований по надежности. В TCP/IP стеке уже есть базовые проверки целостности (на втором уровне и в самом протоколе tcp)


Название: Re: Корректная передача по TCP
Отправлено: Vexator от Август 21, 2009, 06:57
для ммо-игрушки это нормально? :)


Название: Re: Корректная передача по TCP
Отправлено: Rcus от Август 21, 2009, 07:15
для ммо-игрушки это нормально? :)
Я ковырял только один сетевой протокол от mmorpg (Anarchy Online) и никакой дополнительной подписи пакетов там не было.


Название: Re: Корректная передача по TCP
Отправлено: BRE от Август 21, 2009, 07:20
2 Vexator: Мне тоже кажется, что не стоить дополнительно проверять пакеты.
Если придет битый пакет, он будет отброшен на уровне стека (ты его все равно не получишь) и сам стек запросит его повторно.


Название: Re: Корректная передача по TCP
Отправлено: Vexator от Август 21, 2009, 07:48
Спасибо, тогда пока не буду городить все это :)


Название: Re: Корректная передача по TCP
Отправлено: Apostol от Август 25, 2009, 00:49
В начале пакета его длина, в конце - контрольная сумма (4 байтика) - этого должно хватить (как пример из ММОРГ lineage2, про блуфиш шифрование я умалчу:) ) Если пакет не проходит проверку - повторный запрос ) Вот и все)