Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

глюки с ActiveConnections [D5, NT4, Win2k]


izhalex ©   (2002-10-12 12:05:00) 

Подскажите люди может я где глючу или что ...
Включаю приложение с ServerSocket
Коннекчусь к нему с других компов ClientSocket"ами
например если коннект был с двумя ClientSocket"ами, то ServerSocket.Socket.ActiveConnections может быть и 3 и даже 4 :(
как будто по рандому
подскажите плз в чем глюк


Digitman   (2002-10-22 09:51:00) [1]


> начинаю трасерить


Не знаю уж, что ты там и как "трасеришь", но OnClientRead() возникает ПОСЛЕ OnClientConnect().

Ты не выдумывай, а подсчитай, СКОЛЬКО РАЗ на стороне сервера возникло событие OnClientConnect и сравни полученное значение с состоянием св-ва ActiveConnections


izhalex   (2002-10-22 09:10:00) [2]

попробую поподробнее
допустим у меня в сетке n клиентов все ждут соединения с серваком, который пока вырублен. начинаю трасерить серверную программу, захожу в ServerSocket1ClientRead ПЕРВЫЙ раз, сразу после формкреейта (первый ответ от ПЕРВОГО же клиента). Смотрю на значение ActiveConnections, а оно уже ДВА ! вот и все чудеса :(((((((( и OnClientDisconnect еще ни разу


Digitman   (2002-10-22 08:55:00) [3]

Как это "по 2 создаются" ? Сами по себе ?? Да ну не бывает чудес !!

Еще раз спрашиваю :

1. сколько всего экземпляров TClientSocket (потенциальных клиентов) существует на момент тестирования ?
2. сколько раз у каждого из клиентов возникло событие OnConnect и OnDisconnect (как ответная реакция на Open и Close) ?
3. сколько раз у сервера возникло событие OnClientConnect и OnClientDisconnect ?


izhalex   (2002-10-22 08:48:00) [4]

ну activeconnections это еще полбеды. но вот что делать с сокетами лишними у серверсокета - это уже вопрос. ведь они тоже по 2 создаются :( или удалять один лишний ?


Digitman   (2002-10-16 09:09:00) [5]

А зачем ее "бороть" ? Просто проконтролируй происходящее в своем собственном сч-ке активных коннектов :

- на стороне сервера :
в событии OnClientConnect() - Inc(Счетчик)
в событии OnClientDisconnect() - Dec(Счетчик)

- на стороне клиента :
в событии OnConnect() - Inc(Счетчик)
в событии OnDisconnect() - Dec(Счетчик)


izhalex   (2002-10-15 15:26:00) [6]

ну енто и колючему ясно
а вот как бороть сию ситуацию - другой вопрос :-|


Digitman   (2002-10-14 13:24:00) [7]

>izhalex

Событие ClientRead здесь ни при чем.


Если АctiveСonnections = 2 , это говорит только об одном - за все время данного сеанса активности сервера на клиентской стороне кол-во успешных коннектов было на два больше, чем кол-во успешных же дисконнектов.


izhalex   (2002-10-14 12:32:00) [8]

входит в процедуру ServerSocket1ClientRead 1 раз, а activeconnections сразу на 2 ...


izhalex   (2002-10-14 12:30:00) [9]

Делал я такое ...
чаще всего activeconnections при присоединении 1 клиента увеличивается на 1, но иногда и на 2 :( а после дисконнекта всегда тока на 1.(в начале activeconnections=0)
дело в том что клиентами я постоянно (по таймеру) опрашиваю наличие сервера(т.е. для теста беру ситуацию, когда клиент включен, а сервак нет). дак вот, ежели ставлю малое время опроса на клиенте(порядка 1 сек) то возникает та самая трабла при включении сервака, а ежели 5 сек - то вроде бы нет ...


Malder   (2002-10-14 00:27:00) [10]

сделай так...

ServerSocket.Connect(...);
Begin
Label1.caption:=inttostr(ServerSocket.socket.activeconnections);
end;
...
ServerSocket.Disconnect(...);
Begin
Label1.caption:=inttostr(ServerSocket.socket.activeconnections);
end;


Ты будешь сразу видеть, когда изменяется ActiveConnections.

Если в начале он не будет равен нулю, если сразу меняется больше, чем на единицу - то это глюк ServerSocket (это вряд ли).

Далее посмотри. После диконекта клиентов ActiveConnections уменьшается ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо