Получение данных в пакетах на TCP-клиенте - PullRequest
0 голосов
/ 19 февраля 2011

Перехватывает ли recv () данные в пакетах или я могу получить пакеты данных с отметками времени?

Ответы [ 3 ]

2 голосов
/ 19 февраля 2011

В сокете дейтаграммы (например, UDP), recv получает данные в дейтаграммах.Однако TCP является сокетом в потоковом режиме, и recv получает набор байтов без учета пакетов.

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

1 голос
/ 19 февраля 2011

Recv получает данные из сокета, которые были успешно получены. Он не говорит вам, когда это произошло; т.е. нет отметки времени.

Не могли бы вы уточнить, какую проблему вы пытаетесь решить («зачем вам это нужно?»), А не пытаться решить ее? (Или я совершенно не понял ваш вопрос?)

0 голосов
/ 19 февраля 2011

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

Эта информация может быть извлечена на принимающей стороне.Хотя, как уже упоминалось, соединение является TCP ... данные будут в потоковом формате, а не как полный пакет, как в случае UDP.

...