Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
Vadim S   (2003-09-30 15:12) [0]

Есть процедура , которая прописана на события
ClientConnect,ClientDisconnect.

procedure UpdateClientStatistiks;
var CC : integer;
begin
if Server.Socket.ActiveConnections>0
then for CC:=0 to Server.Socket.ActiveConnections-1 do begin
{Заполняем данные}
end;
end;

Но когда клиент отсоединяется, то получается что пользователей
подсоединено на одного больше, чем реально.

Как это обойти?


 
Digitman   (2003-09-30 15:23) [1]

список ActiveConnections декрементируется ПОСЛЕ завершения обработки события OnClientDisconnect


 
Vadim S   (2003-09-30 15:29) [2]

Чего делать?
Какое событие вызывается после декремента?


 
Verg   (2003-09-30 15:39) [3]

Если рассматривать только приведенный код, то только так:
Передавать в указанную процедуру параметр типа интегер, в OnConnect=0, в OnDisconnect=1
ну и...

procedure UpdateClientStatistiks(Discon : integer);
var CC : integer;
begin
for CC:=0 to Server.Socket.ActiveConnections-1-Discon do
begin
{Заполняем данные}
end;
end;


 
Polevi   (2003-09-30 15:40) [4]

асинхронная развязка
PostMessage посылай сообщение из OnClientDisconnect, в обработчкике вызывай UpdateClientStatistiks


 
Digitman   (2003-09-30 15:52) [5]

procedure XXX.ClientDisconnect(.., Socket: TCustomWinSocket);
var
i: Integer;
ClSoclet: TCustomWinSocket;
begin
for i:=0 to Server.Socket.ActiveConnections-1 do begin
ClSocket := Server.Socket.Connections[i];
if ClSocket = Socket then
.. это тот самый клиент, который отключился и вызвал данное событие
else
... а это еще активный клиент с т.з. сервера
end;

end;


 
Vadim S   (2003-09-30 17:49) [6]

Так и сделал . Спасибо.

Но может есть способ лучше?


 
Digitman   (2003-09-30 17:53) [7]

смотря что тебе нужно


 
Vadim S   (2003-10-02 12:27) [8]

Сообщение, после XXX.ClientDisconnect(.., Socket: TCustomWinSocket);
когда клиент уже отсоединился, чтобы обновить статистику,
если такого нет.
То буду использовать вышеуказанный способ.


 
Digitman   (2003-10-02 13:26) [9]


> чтобы обновить статистику


я не знаю, что ты под "статистикой" подразумеваешь, но если тебе нужно просто вести некий свой оперативный список активных клиентов, то в событии OnClientConnect добавляй в этот список элемент, а в событии OnClientDisconnect удаляй соотв.элемент ... всех делов)

элементы этого списка д.б. ассоциированы со вторыми параметрами этих событий, т.е. с соответствующими объектами TServerClientWinSocket



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

Форум: "Сети";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
14-90064
Гость
2003-11-05 16:17
2003.11.27
Как определить по номеру, какой это процессор


3-89718
Zai
2003-11-10 10:26
2003.11.27
ClientDataSet в FIBPlus


8-90001
Trekk
2003-07-28 14:24
2003.11.27
Как сделать слои?


14-90110
Yuri Btr
2003-11-04 11:32
2003.11.27
Дата компиляции в файле


3-89693
Василиск
2003-11-06 11:27
2003.11.27
Как бороться с сообщениями сервера?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский