Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2012, 03:19   #1
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию TServerSocket - количество клиентов

Как ограничить максимальное количество клиентов в TServerSocket?
Мне нужно, чтобы мог подсоединиться только один клиент.
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 14.02.2012, 09:10   #2
sxcine
Пользователь
 
Аватар для sxcine
 
Регистрация: 26.05.2010
Сообщений: 78
По умолчанию

в TWSocketServer это свойство MaxClients.
а тут при подключении проверять, есть ли подключенный сокет, если есть то отключать новую сессию, ИМХО
sxcine вне форума Ответить с цитированием
Старый 14.02.2012, 16:47   #3
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Цитата:
Сообщение от sxcine Посмотреть сообщение
в TWSocketServer это свойство MaxClients.
а тут при подключении проверять, есть ли подключенный сокет, если есть то отключать новую сессию, ИМХО
да, в событии OnConnect на стороне сервера я могу проверить следующее:
Код:
if ServerSocket1.Socket.ActiveConnections > 1 then Socket.Close
т.е. если количество активных подключений > 1 то закрыть это соединение.
в этом событии кол-во активных подключений уже =2.
Но дело в том, что на стороне этого клиента все равно возникнет событие OnConnect а следом за ним OnDisconnect. А мне нужно, чтобы у данного клиента OnConnect не возникло. Вот как это сделать?
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 14.02.2012, 17:02   #4
sxcine
Пользователь
 
Аватар для sxcine
 
Регистрация: 26.05.2010
Сообщений: 78
По умолчанию

Цитата:
Сообщение от Don Karleone Посмотреть сообщение
А мне нужно, чтобы у данного клиента OnConnect не возникло. Вот как это сделать?
это, если я не ошибаюсь, невозможно.
sxcine вне форума Ответить с цитированием
Старый 14.02.2012, 19:13   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

событие OnAccept.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.02.2012, 22:48   #6
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
событие OnAccept.
результат тот же самый...
Первым возникает событие OnConnect на сервере, а за тем OnAccept
ICQ: 593-013-807

Последний раз редактировалось Don Karleone; 14.02.2012 в 22:51.
Don Karleone вне форума Ответить с цитированием
Старый 14.02.2012, 23:30   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так актуально, что бы OnConnect не возникало? Разве в этом случае нет возможности в событии обойти какой-то критичный участок кода?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.02.2012, 23:39   #8
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Так актуально, что бы OnConnect не возникало? Разве в этом случае нет возможности в событии обойти какой-то критичный участок кода?
да, актуально. В событии OnConnect на стороне клиента прописано:
Код:
ShowMessage('соединение установлено');
а в OnDisconnect:
Код:
ShowMessage('соединение разорвано')
вот нужно сделать так, чтобы пользователь не увидел этих окон. А то как-то некрасиво получается. В начале соединение установлено, а потом сразу же разорвано.
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 14.02.2012, 23:43   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если после соединения удастся совершить какие-то действия в отношении сервера, тогда и выдавайте сообщение. На основании этого и в OnDisconnect можно проследить причину разрыва соединения
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.02.2012, 00:28   #10
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Если после соединения удастся совершить какие-то действия в отношении сервера, тогда и выдавайте сообщение. На основании этого и в OnDisconnect можно проследить причину разрыва соединения
в том то и дело, что ShowMessage() в OnConnect информирует о том, что соединение установлено и теперь можно совершать какие-то действия )
Как в OnDisconnect проследить причину разрыва?
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по соединению клиентов Kudryavtsev Общие вопросы Delphi 3 17.05.2011 17:36
Запрос активных клиентов mavlon_m SQL, базы данных 4 23.02.2011 11:13
Ограничить количество клиентов SwiP Работа с сетью в Delphi 1 16.06.2010 19:17
Сервер и несколько клиентов Andr Работа с сетью в Delphi 10 17.09.2007 09:24