![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IdTCPServer [D6, WinME]
Александр из Минска © (2003-12-27 16:05:00)
Помогите, пожалуйста. Нужно чтобы к серверу мог коннектиться только один клиент. Я вроде все способы с событиями на коннект и дисконнект перебрал... Может у кого-нибудь есть какие-нибудь идеи? или знает стандартные свойства?
Digitman (2003-12-30 15:53:00) [1]
это - другой вопрос.
подходит значит подходит.
Александр из Минска (2003-12-30 14:45:00) [2]
> Digitman
Вообще вы правы. Коннектится не один комп, а сколько угодно. Но как только происходит коннект к серверу, происходит и проверка количества соединений. И если их больше 1, то это соединение (которое подконнектилось) сразу же отрубается. Просто эта штука мне тоже подходит. Признаю, вопрос был задан не совсем корректно по отношению к моим планам.
$hade (2003-12-30 06:47:00) [3]
Используй IdSimpleServer вместо IdTCPServer...
Digitman (2003-12-29 17:14:00) [4]
> Точь в точь как в вопросе было указано
никак нет, уважаемый)
предлагаю пари на ящик хорошего коньяка)
Александр из Минска (2003-12-29 16:52:00) [5]
Я все сделал как надо. (Точь в точь как в вопросе было указано) Просто я конкретно сморозел некоторых местах. А использовал я IdTCPServer1.Threads.LockList.Count...
Digitman (2003-12-29 13:21:00) [6]
> кое-как
не "кое-как", а, думаю, - никак
уверен, что без использования упомянутого механизма то что ты реализовал - вовсе не то что звучало в вопросе
Александр из Минска (2003-12-29 13:08:00) [7]
Спасибо. Я уже кое-как сделал эту штуку. :)
Digitman (2003-12-29 09:19:00) [8]
> какие-нибудь идеи?
Идея есть, причем - единственно верная (если четко следовать требованиям задачи), но работать она будет только под Винтукеем и ВинХрю - это явное использование Winsock2 в части механизма true conditional acceptance, который задействуется установкой опции "слушающего" серверного гнезда SetSockOpt(SO_CONDITIONAL_ACCEPT) перед Listen() с последующим условным акцептированием вх.запросов на коннект вызовом WSAAccept() вместо Accept()
Virus.exe (2003-12-28 17:47:00) [9]
А не пробовал проверять при коннекте скока всего клиентов на серваке уже висит?А вообще я такие вещи обычно делаю через TServerSocket.Socket.Connections.