![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Буфер UDP [Win95/98, NT4, Win2k]
s22_shura © (2002-12-15 20:19:00)Кто-нибудь на этой огромной планете знает как в Windows установить размер приёмного буфера выделяемого при создании UDP сокета?
MSDN по этому поводу отмалчивается :( , хотя по TCP/IP такую информацию даёт.
Опытным путём я определил примерный размер этого буфера ~8кб. Хотелось бы ешо увеличить. Наверняка это делается как и с TCP путём добавления соответствующих записей в реестр, но вот каких и куда.......??????????????
neodiX (2003-02-05 19:11:00) [1]используй indy компонент, там размер удп буфера меняется без проблем...
Ундервуд (2003-02-05 15:21:00) [2]Странно это всё кстати говоря... Когда я для проверки одного чата на NMUDP сделал бомбер и начал засыпать клиента пакетами, ну ограничась 65535 пакетами подряд, по килобайту каждый примерно, то клиент подвисал намертво на 2-3-5 минут, в зависимости от проца, но в конце концов все эти пакеты попадали по назначению.
Digitman (2003-02-05 14:28:00) [3]если лень переделывать, перехвати вызов своим процессом ф-ции socket() из ws2_32.dll, будет тебе и дескриптор)
-=Ventus=- (2003-02-05 14:20:00) [4]SetLength();
s22_shura (2002-12-17 19:39:00) [5]setsockopt ээто конечно клёво, но я и товарищу тому бы посоветовал для таких настроек ТСР как размеры пакетов и буферов и всего такого есть ключи в реестре. Выставил и всё ок, а для UDP не нашёл (в то чо их нет я не верю). Может найдётся умник - подскажет. Я уже всех продвинутых знакомых, среди которых есть сертифицированные Microsoft-ом, напряг, нои они ничё не нашли.
setsockopt ээто конечно клёво, но в моём случае всё сложнее. Я всё из начально делал на TNMUDP, и теперь если уж переделаю весь проект, то на ТСР наверное (ТАК НЕОХОТА!!! Всё Т А К работоло как часы.... пока на предельных нагрузках обмен не начался). Хотелось малой кровью попробовать увеличить буфер, а для setsockopt нужен дискриптор сокета, а у меня его нет :(
Sha (2002-12-16 21:33:00) [6]2 s22_shura (16.12.02 20:04)
Если кто-то ест процессор, поможет только внутренняя нумерация пакетов и перезапрос в случае их потери.
А ссылка вот:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1039282160&n=4
s22_shura (2002-12-16 20:04:00) [7]Уважаемый Sha, я не смог найти в форумах эту информацию :((((((((, но мне она очень необходима, а то ещё уволят ненароком :) , хотя это врятли, но уже 2 недели убиваюсь.
Проблемма в том, что прога, принимающая UDP сообщения их теряет из-за того, что указанный буфер переполняется. А переполняется он из-за того, что иногда прога наинает расчёты и некоторое время не хватает процессорного времени на извлечение из этого буфера.
Я тут ещё спрашивал про потоки - это всё одна и та-же проблемма, не знаю уже что делать.
Прежде чем бросаться всё переделывать на ТСР хотелось бы увеличить размер UDP буфера.
Я использую объект класса TNMUDP.
Одним словом - если можешь помочь с буфером буду очень благодарен.
Sha (2002-12-15 20:33:00) [8]Несколько дней назад обсуждали. Там все есть.