Текущий архив: 2006.04.16;
Скачать: CL | DM;
ВнизWSA.Listen Найти похожие ветки
← →
GanibalLector © (2006-01-06 01:37) [0]
function Listen(S:TSocket;BackLog:Integer):Integer;
Параметр S задаёт сокет, который переводится в режим ожидания подключения. Этот сокет должен быть привязан к адресу, т.е. функция Bind должна быть вызвана для него явно. Для сокета, находящегося в режиме ожидания, создаётся очередь подключений. Размер этой очереди определяется параметром BackLog. Если этот параметр равен SoMaxConn, очередь будет иметь максимально возможный размер. В MSDN"е отмечается, что узнать максимально допустимый размер очереди стандартными средствами нельзя. Функция возвращает ноль в случае успешного завершения и Socket_Error в случае ошибки.
В WinSock.pas SoMaxConn=5 ! Это что ж получается,что у сервера не может быть более 5 клиентов??? ИМХО,бред.
← →
GanibalLector © (2006-01-06 01:40) [1]Или перефразируя это:
В MSDN"е отмечается, что узнать максимально допустимый размер очереди стандартными средствами нельзя.
и этоВ WinSock.pas SoMaxConn=5
Я случайно ставлю 5 клиентов. Но получается,что это не 5,а максимально допустимый размер.
← →
GanibalLector © (2006-01-06 01:43) [2]Вопрос : как ограничить сервер 5 клиентами?
Получается,что никак. Или 4 или 6.
← →
Fay © (2006-01-06 08:52) [3]2 GanibalLector © (06.01.06 1:43) [2]
А размер очереди как-то связан с количеством клиентов?
IMHO, слушающему гнезду не до них никакого дела.
← →
FrykT © (2006-01-06 11:59) [4]Если поставить число 50, то ничего страшного не будет. В обычной ОС оно так и будет 5, неавзирая на число 50. НО, если запустить на серверной ОС, то это число будет именно 50 ! Я непомню предела на серверной ОС.
← →
Fay © (2006-01-06 12:26) [5]2 GanibalLector ©
1) BackLog - Maximum length of the queue of pending connections.
Не "клиетов у сервера", а в очереди на accept.
2) Смотрим Platform SDK...
WinSock.h : #define SOMAXCONN 5
WinSock2.h : #define SOMAXCONN 0x7fffffff
Берём вторую, и не паримся 8)
2 FrykT © (06.01.06 11:59) [4]
> В обычной ОС оно так и будет 5
"Оно" - это хто? LOL
← →
GanibalLector © (2006-01-06 15:28) [6]Спасибо,понял.
На счет ограничений клиентов:
после WSA.Accept на сервере,я заполняю некоторую структуру.И,соответственно,посмотрев длину этой структуры не разрешаю серверу делать Accept. Я прав???
← →
Fay © (2006-01-06 15:53) [7]2 GanibalLector © (06.01.06 15:28) [6]
> посмотрев длину этой структуры
Это типа проверки на колисечтва подключений?
← →
Fay © (2006-01-06 15:55) [8]колисечтва
8)) "количества", конечно
← →
GanibalLector © (2006-01-06 16:26) [9]Ну,да.
← →
Fay © (2006-01-06 17:10) [10]2 GanibalLector © (06.01.06 16:26) [9]
Прости, но смысл "после WSA.Accept" "не разрешаю серверу делать Accept" до меня пока не доходит.
З.Ы.
WSA.Accept - что это?
← →
Verg © (2006-01-06 21:37) [11]
> Fay © (06.01.06 12:26) [5]
> 2 GanibalLector ©
> Берём вторую, и не паримся 8)
Да хоть первую.
Этот параметр уже давно - весьма условная величина, определяющая макс. длину очереди запросов соединений не подтвержденных приложением (не акцепнутых). Иными словами - очередь неполностью установленных соединений. Т.е. глубину накополения запросов на соединение, компенсирующую задержку реакции твоего приложение на их возникновение. Как быстрее ты (твое приложение) можешь реагировать на поступающие запросы соединения, так меньше теоритически может быть быть это число.
← →
FrykT © (2006-01-07 08:21) [12]>>2Verg
нет, оно контролируется ОС. Очередь эта.
>>2Fay
>>"Оно" - это хто? LOL
"Оно" -- ЧИСЛО. т.е. максимальная очередь для обработки соединений.
← →
Fay © (2006-01-07 15:11) [13]2 Verg © (06.01.06 21:37) [11]
Я имел ввиду то же самое
Страницы: 1 вся ветка
Текущий архив: 2006.04.16;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.052 c