|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.10.2012, 11:26 | #1 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
UDP протокол :)
Здравствуйте. Возвращаясь к вопросу о UDP протоколе, кое-кого попрошу воздержаться от комментов типа "ааа ты 2 года назад спрашивал" и т.п.
Быть может существуют общие принципы системы 100% гарантии передачи данных через UDP протокол? Пока есть задумка, сделать очередь для сообщений. Перед отправкой, сообщение помещается в этот массив очереди, затем посылается, и ожидается ответ от клиента. Если ответ об успешном получении сообщения пришел - двигаемся дальше по массиву очереди, если нет - переотправляем сообщение опять. Таким образом, даже если связь пропадет на несколько секунд, а потом появится, клиент получит все сообщения, которые были помещены в массив очереди. Ну а в случае превышения очереди, скажем, 100 сообщений, дисконнект и мессага о том, что слишком долго были в лаге Правильно ли так? |
09.10.2012, 11:41 | #2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> принципы системы 100% гарантии передачи данных
100% гарантии даёт только бог. Перекопает экскаватор вам оптоволокно, и привет. А так, доставку с подтвеждением можно сделать десятком разных способов. Вопрос зачем, и на сколько это будет эффективно. Вряд ли у вас получится это сделать лучше, чем у ТСП, а делать хуже, имхо, особого смысла нет.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
09.10.2012, 11:42 | #3 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
все уже придумано
http://udt.sourceforge.net/doc.html |
09.10.2012, 11:46 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Давным давно (в далекой галактике) был такой протокол Z-Modem. Так вто там концепция была другая - отправитель посылал не ожидая подтверждения, а получатель, если чтото потерялось выдавал команду вернутся назад. Правда это было для файлов.
|
09.10.2012, 12:17 | #5 | |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
Цитата:
Отправляем UDP-пакет, ждём 15 секунд, если подтвеждение не пришло, отправляем ещё раз, после 5 попыток делаем вывод о том, что адресат недоступен. Либо просто посмотреть как это делается в TCP и реализовать тоже самое.
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
|
09.10.2012, 12:44 | #6 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
Сложно? Вроде нет
Делаю активную сетевую игру, там в цикле, 20 раз в секунду посылаются пакеты. Может быть послано 5 сообщений текстовых (чат), дабы они не терялись, думаю лучше с очередью. |
09.10.2012, 17:46 | #7 | |
Пользователь
Регистрация: 04.10.2012
Сообщений: 95
|
Конечно не сложно, только так будут медленно передаваться данные.
Цитата:
Одно но. Велосипед хорошо, только вряд ли TCP хуже. Кроме того если, например, скорость высокая, но потери тоже не редкость можно сразу высылать по 2 пакета с одними и теми же сообщениями. В крайнем случае - постоянно высылать все сообщения на которые не пришли подтверждения. (лучше так не делать, а то вдруг полудуплекс и ты забьешь всю сеть пакетами - ни одного подтверждения ес-но не получишь)
Пишу на чистом С, плюсы спилил.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Протокол CGI | Николай1 | Фриланс | 2 | 01.06.2012 23:22 |
Свой протокол | Alex_Gordon | Общие вопросы Delphi | 8 | 07.01.2012 00:13 |
Как остановить SendTo (UDP протокол) | Dasharnb777 | Общие вопросы .NET | 0 | 23.11.2010 23:41 |
рассылка сообщений всем пользователям в чате, протокол UDP | RKS | Работа с сетью в Delphi | 14 | 15.12.2007 11:36 |