Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Sasha_t
Зарегистрирован: 09.05.2006 Сообщения: 5 Откуда: Украина, Днепр
|
Добавлено: Вт Май 09 2006 05:11 Заголовок сообщения: Проблемы с UDP |
|
|
OC : Windows XP
компелятор Builder
пользую компонент indy IdUDPServer
Есть проблема потери пакетов, например при сворачивании моего/других приложений обязательно парочка пропадает
Делаю так:
Код: |
HANDLE procHandle = GetCurrentProcess();
if (!SetPriorityClass(procHandle, REALTIME_PRIORITY_CLASS))
ShowMessage("Err SetPriorityClass");
CloseHandle(procHandle);
|
Не помогает , как победить? |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Вт Май 09 2006 11:59 Заголовок сообщения: |
|
|
UDP не гарантирует доставку пакетов. Если вам нужна гарантиованная доставка обратитесь в сторону TCP |
|
Вернуться к началу |
|
|
Sasha_t
Зарегистрирован: 09.05.2006 Сообщения: 5 Откуда: Украина, Днепр
|
Добавлено: Вт Май 09 2006 19:04 Заголовок сообщения: |
|
|
я знаю что UDP не гарантирует, однако мне кажется, что при 100Мб сети, и обьеме передаваемой\принимаемой информации около 50кб/с потерям просто неоткуда должно браться... |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Ср Май 10 2006 14:21 Заголовок сообщения: |
|
|
Должно не должно дело десятое. Ничего аномального в такой работе UDP нет следовательно и разговаривать неочем... Вот если TCP пакеты начнут пропадать, тогда другое дело... |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Ср Май 10 2006 14:22 Заголовок сообщения: |
|
|
Sasha_t писал(а): | я знаю что UDP не гарантирует, однако мне кажется, что при 100Мб сети, и обьеме передаваемой\принимаемой информации около 50кб/с потерям просто неоткуда должно браться... |
уже сказали выше - Ваш вопрос и выбор средств решения -> не совместимы. Либо используйте другой протокол, либо не задавайте не корректных вопросов.
Теперь по существу...
1) Вы можете хоть осбтавиться приоритетами выполнения. Это собаке седло, либо 7 нога... Вы можете запустить снифер сити и убедиться что пакеты UDP уходят в любом случае с Вашей станции. Вы сам вопрос и пути решения используете из разных плоскостей. Пытаетесь решить сетевые проблемы на локальном проце и ресурсах...Занятное дело аднака
2) Потеря пакетов может быть по разным причинам. И точку насыщения никто не отменял кстати. Пропускная способность канала занимательная цифра, но из области теорий. Почему - по разным причинам. От банального не контакта, до неуспевании свитча обработать поток данных. Либо выкидывание не пакетов, по тысяча и одной причине... Либо не согласование нагрузок в кабельном хозяйстве... Либо забивании трафика передачей нескольких гигов инфы на других станциях... Либо глюк графической станции Юникса стоящей в режиме ввода пароля... и т.д. и т.п.. Вариантов достаточно, чтоб чихать на Ваши телодвижения на станции...
UDP гарантирует передачу пакета и всё... Никто Вам не обещал что пакет получит адресат. НЕТ ТАКОГО !
TCP гарантирует упорядоченную передачу данных клиенту. В режиме полного дуплекса (туды-сюды по русски). Заметьте - в данном протоколе НЕ идёт речь о ПАКЕТАХ. Идёт речь о ПОТОКЕ !!!
с уважением
(круглый) |
|
Вернуться к началу |
|
|
Sasha_t
Зарегистрирован: 09.05.2006 Сообщения: 5 Откуда: Украина, Днепр
|
Добавлено: Ср Май 10 2006 19:41 Заголовок сообщения: |
|
|
Да, все сказаное верно, особо не поспоришь...
Установка высокого приоритета процесса была сделана в виду раздумий на тему что приложение может не успевать обработать месидж о приеме пакета, или вообще не обрабатывает по причине некой *занятости* кого то чем то..., хотя в тестовой программе нет ничего кроме чтения пакета, и выяснению не случилось ли потери...
Есть одна особенность которая не дает мне покоя...:
Различное качество приема информации на компах с одинаковой или равнозначной комплектацией.... Причем еслина на каком то РС информация принимается с потерями, то картина потерь 100% одинаковая в случае передачи информации на этот РС от удаленного компьютера, и в том случае если запустить преложение приема\передачи на одном РС. |
|
Вернуться к началу |
|
|
Aragaer
Зарегистрирован: 28.03.2005 Сообщения: 164
|
Добавлено: Чт Май 11 2006 09:18 Заголовок сообщения: |
|
|
Если в голове присутствует полная уверенность в том, что подобные потери будут случаться безумно редко и с этим есть желание смириться, можно попытаться намутить всяких проверок на тему того, что очередной пакет все-таки пропал. И в этом случае хотя бы страшно ругаться. _________________ Open your eyes.
And Awaken. |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Чт Май 11 2006 13:32 Заголовок сообщения: |
|
|
Aragaer писал(а): | Если в голове присутствует полная уверенность в том, что подобные потери будут случаться безумно редко и с этим есть желание смириться, можно попытаться намутить всяких проверок на тему того, что очередной пакет все-таки пропал. И в этом случае хотя бы страшно ругаться. |
Вы апсолютно правы... Правда задавшись такой целью и сделав софтяру начинаешь понимать что в профиль это нечто смахивающее на TCP слой. Идти по этому направлению - нужно отдавая се отчёт в этом. И понимать ради чаво пошёл. Например...
Реализация протокола на МК каком нить. Правда там так же, уже многие тропы истоптаны тыщу раз...
--------------------------------------------------
Sasha_t писал(а): | ....Различное качество приема информации на компах с одинаковой или равнозначной комплектацией.... Причем еслина на каком то РС информация принимается с потерями, то картина потерь 100% одинаковая в случае передачи информации на этот РС от удаленного компьютера, и в том случае если запустить преложение приема\передачи на одном РС. |
Это не совсем так...
Попробуйте провести такие эксперименты как
1) забить канал пакетами.
2) забить ударной нагрузкой сервак(рабочую станцию).
3) перевести приоритет выполнения приёмника(передатчика) ниже - в фоновый режим. Либо поднять какому-нить выполняющемуся процессу приоритет до реал тайма...
инфу для анализа берите на уровне снифера. а не мессэдж диаложков(и не апи Win32, а ниже).
---------------------------------------------------
с уважением
(круглый) |
|
Вернуться к началу |
|
|
Sasha_t
Зарегистрирован: 09.05.2006 Сообщения: 5 Откуда: Украина, Днепр
|
Добавлено: Вс Май 14 2006 01:44 Заголовок сообщения: |
|
|
Проблема решилась...
Из програмы выбрашены опробованные компоненты UDP, (Indy, NMUDP) опустились до уровня winsocket:
Код: |
WSAStartup
socket
bind
WSAAsyncSelect
recvfrom
|
Потери бывают, но не принципиального характера, вообще история с этими компонентами не выдерживающеми критики оставила весьма тяжелый осадок, не понятно зачем из выпускают.., или же нужно быть каким то более искушенным их пользователем, не известно..., вообще по работе с этими компонентами, в сети оч много обсуждается проблем, между тем удобного опубликования принципов использования winsocket маловато...
За последнее время просмотрев некоторое количество проектов пришел к выводу что борланд не пользуют для серьезных вещей..., вопрос такой, продуктивно ли более менее владея билдером попробовать поизучиать вижуал... ? Чему отдается большее предпочтение участниками форума шарп или чистый вижуал?
От души благодарю всех кто принимал участие в обсуждении этой теме.[/quote] |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Вс Май 14 2006 07:50 Заголовок сообщения: |
|
|
microsoft must die!!! Java - круто!!! |
|
Вернуться к началу |
|
|
|