Re: UDP sockets: отсев "опоздавших" пакетов.
От: 0xDEADBEEF Ниоткуда  
Дата: 19.11.04 15:27
Оценка:
Hello, idontsov!
You wrote in conference rsdn.network on Thu, 18 Nov 2004 20:49:34 GMT:

i> Приложение периодически запрашивает сервер: отправляет udp пакет запроса

i> и ждет ответ. Ответ ожидается в течение определенного тайм-аута.
UDP — НЕНАДЕЖНЫЙ протокол. Поэтому он может:
a) терять датаграммы
б) менять их местами т.е. A2 может придти раньше A1 и тд.

i> Скажите, на сколько корректно для отсева таких опоздавших датаграмм

i> открывать/закрывать клиентский сокет на каждом витке цикла опроса?
Бесполезно. UDP сокет не имеет понятия "соединение".
Например, если твои датаграммы передаются "голубиной почтой" и
придут через полгода, ты их словишь и на новый сокет.

Единственное, что можно посоветовать, это в вставлять пакеты запросов и ответов "метку транзакции". То есть например в R1 (и соответственно в A1), метка будет "1", в R2 и A2 метка будет "2" и т.д.
Posted via RSDN NNTP Server 1.9 gamma
__________
16.There is no cause so right that one cannot find a fool following it.
Re[2]: UDP sockets: отсев "опоздавших" пакетов.
От: Тёма29  
Дата: 20.11.04 13:47
Оценка:
DEA>UDP — НЕНАДЕЖНЫЙ протокол. Поэтому он может:
DEA>б) менять их местами т.е. A2 может придти раньше A1 и тд.

ТЦП тоже такое умеет. Другое дело, что при сборке потока пакеты, не влезающие в окно, будут выброшены. Поэтому, кстати, приходится при мультироутинге пускать все ТЦП-соединение по одному маршруту. Иначе из-за неочередности прихода пакетов будет слишком большой оверхед по траффику. Это чисто админский взгляд на жизнь Но программерам нужно его учитывать
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.