![]() |
|
Модераторы: feodorv |
![]()
|
|
| JohnnyQ |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 22.7.2007 Где: Санкт_Петербург Репутация: нет Всего: нет |
Добрый день!
Есть клиент-сервер на UDP. Нужно организовать подтверждение доставки. отправка:
и прием
Хочу сделать, чтобы все отправляемые пакеты нумеровались. Суть вопроса, номер пакета нужно отправлять в buf или есть способ передать номер пакета другим образом (можно ли передавать не
структуру struct в которой будут храниться
|
||||||||
|
|||||||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 1 Всего: 18 |
||||
|
||||
| vinick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 6 Всего: 22 |
ИМХО слишком большие датаграммы. Где-то я читал, что в реальности пакеты свыше 4кб большинством роутеров будут отброшены. Источник к сожалению не помню. По сабжу - да можно.
только следи за порядком байт в номере |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: нет Всего: 59 |
||||
|
||||
| JohnnyQ |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 22.7.2007 Где: Санкт_Петербург Репутация: нет Всего: нет |
ок! отправить мы можем, а принять данные как структуру реально??? например:
|
||||||
|
|||||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 1 Всего: 18 |
||||
|
||||
| vinick |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 6 Всего: 22 |
Да именно так, только помни про выравнивание и про порядок байт. Если будет что собирать. Насколько я понял - для UDP фрагментация нежелательна. Добавлено через 4 минуты и 51 секунду
Разве для UDP это имеет смысл? |
||||
|
|||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 1 Всего: 18 |
||||
|
||||
| JohnnyQ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 22.7.2007 Где: Санкт_Петербург Репутация: нет Всего: нет |
ок! всем спасибо!!! буду пробывать!!!
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: нет Всего: 59 |
По моему по барабану. UDP транспортный уровень и он ничего не знает о фрагментации собственно IP пакетов - это реализуется более низким IP протколом. Он будет фрагментировать как нужно для разных сегментов сети. И на качество собственно UDP это не должно отражаться - IP гарантирует сборку пакета UDP на приемнике в том виде, в каком он ушел с передатчика, если конечно он (пакет) до приемника дойдет. Если не все соберется - пакет просто будет отброшен. Существуют, конечно, варианты, когда складываются неблагоприятные условия (например, пакет режется на две части, а во второй только пара байт информации). Но ИМХО - жестко подгонять размер передаваемого блока достаточно хлопотно. Можно в протоколе предусмотреть увеличение/уменьшение кадра в зависимости от условий передачи. Мы заранее не знаем какой размер кадра у принимающей стороны будет и в промежуточных узлах. (Хотя это можно выяснить, конечно). Я встречал в разных источниках разные рекомендации: 4 кб (достаточно устаревшая рекомендация на мой взгляд) 16 Кб (вроде как для большинства сетей оптимальна) 64 Кб (чаще всего встречал в последнее время. И кажется буфер виндовых сокетов именно такого размера по умолчанию, не проверял). А вот дойдет собственно пакет UDP до получателя или нет - это уже никто не знает. И сколько времени он будет блуждать (возможно следующий пакет придет раньше предыдущего). Другое дело при ненадежных каналах связи повторная отправка 64К все-таки более рессурсоемка. Поэтому от четких рекомендаций я воздержусь - слишком мало у меня опыта. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |