Название: Корректная передача по 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, про блуфиш шифрование я умалчу:) ) Если пакет не проходит проверку - повторный запрос ) Вот и все)
|