Главная страница
    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
8-90014
Darlock
2003-07-22 16:49
2003.11.27
Печать картинки


4-90164
Davinchi
2003-10-04 14:38
2003.11.27
Завершение работы приложения


1-89890
Oleg Khvostenko
2003-11-15 13:46
2003.11.27
Real в Integer


3-89686
bober
2003-11-07 16:52
2003.11.27
dbtext


1-89947
mmmaloy
2003-11-18 01:05
2003.11.27
TreeView программно





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский