Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Обновление списка клиентов ClientSocket   Найти похожие ветки 

 
NetMan2   (2004-03-17 13:01) [0]

У меня программы с помощью компонентов ClientSocket и ServerSocket обмениваются информацией по сети. Есть список активных клиентов, то есть подключённых в данный момент. Как мне сделать чтобы он автоматически обновлялся, при подключении или отключении коиента. Обрабатываю событие OnClientConnect, всё нормально, а на OnClientDisconnect не реагирует. Приходится в ручную обновлять.


 
FireMan_Alexey ©   (2004-03-17 13:06) [1]

В событии OnClientError добавь Socket.Disconnect(Socket.SocketHandle);
Error:=0;


 
FireMan_Alexey ©   (2004-03-17 13:07) [2]

Хотел тебе напомнить, что КОД показывать желательно!!!


 
Digitman ©   (2004-03-17 13:34) [3]


> а на OnClientDisconnect не реагирует


потому что отключившийся клиент (т.е. тот кто явился причиной возбуждения данного события) в момент обработки события (вплоть до возврата из обработчика) все еще фигурирует в списке ActiveConnections (он будет исключен из упомянутого списка СРАЗУ же после завершения тобой обработки события) .. так устроен TServerSocket .. и правильно он устроен, потому что смысл события OnClientDisconnect - указать тебе на клиента, который только что отключился, чтобы ты отреагировал на это событие нужным тебе образом

вариантов привести твой собственный виз.список активных коннектов в соответствие со внутренним списком ActiveConnections всего два : синхронный и асинхронный

к примеру, пусть список активных коннектов у тебя отображается средствами ListView

рассмотрим, например, синхронный вариант

В событии OnClientConnect ты добавляешь новый TListItem к своему списку и ассоциируешь его с ДАННЫМ клиентом

li := ListView.Items.Add;
//Socket - это 2-й параметр метода-обработчика события
li.Data := Socket; //прямая ссылка  
Socket.Data := li; //реверсивная ссылка

В событии OnClientDisconnect ты удаляешь TListItem, ассоциированный с ДАННЫМ клиентом, из своего списка

//Socket - это 2-й параметр метода-обработчика события

или
TListItem(Socket.Data).Delete; //поиск по прямой ссылке

или
ListView.FindData(0, Socket, True, False).Delete; //поиск по реверсивной ссылке


 
Digitman ©   (2004-03-17 13:34) [4]


> а на OnClientDisconnect не реагирует


потому что отключившийся клиент (т.е. тот кто явился причиной возбуждения данного события) в момент обработки события (вплоть до возврата из обработчика) все еще фигурирует в списке ActiveConnections (он будет исключен из упомянутого списка СРАЗУ же после завершения тобой обработки события) .. так устроен TServerSocket .. и правильно он устроен, потому что смысл события OnClientDisconnect - указать тебе на клиента, который только что отключился, чтобы ты отреагировал на это событие нужным тебе образом

вариантов привести твой собственный виз.список активных коннектов в соответствие со внутренним списком ActiveConnections всего два : синхронный и асинхронный

к примеру, пусть список активных коннектов у тебя отображается средствами ListView

рассмотрим, например, синхронный вариант

В событии OnClientConnect ты добавляешь новый TListItem к своему списку и ассоциируешь его с ДАННЫМ клиентом

li := ListView.Items.Add;
//Socket - это 2-й параметр метода-обработчика события
li.Data := Socket; //прямая ссылка  
Socket.Data := li; //реверсивная ссылка

В событии OnClientDisconnect ты удаляешь TListItem, ассоциированный с ДАННЫМ клиентом, из своего списка

//Socket - это 2-й параметр метода-обработчика события

или
TListItem(Socket.Data).Delete; //поиск по прямой ссылке

или
ListView.FindData(0, Socket, True, False).Delete; //поиск по реверсивной ссылке



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.097 c
11-1068393847
Vladimir Kladov
2003-11-09 19:04
2004.04.11
Есть спецы по яве? Надо скрипт новостей до ума довести.


14-1082202368
garry79
2004-04-17 15:46
2004.04.11
Народ, где можно поискать avi шки или gif ы для заставок


1-1079955361
master_dm
2004-03-22 14:36
2004.04.11
Работа с катологами


14-1081937022
Style
2004-04-14 14:03
2004.04.11
Как посвящают в программисты? :)


3-1078994390
sherminator
2004-03-11 11:39
2004.04.11
из мемо в поле таблицы Access