Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Узнать IP отключенного 
V
    Опции темы
xloff
Дата 7.1.2008, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Indy9, idTcpServer. На событие onDisconnect хочу словить айпишник отключающегося клиента. Вообщем ничего не получаю в AThread.Connection.Server.Bindings.Items[g].PeerIP. Вот код:

Код

procedure TForm1.TIdTCPServerDisconnect(AThread: TIdPeerThread);
var
g:integer;
ActClient: PClient;
begin
ActClient := PClient(AThread.Data);
   for g:=0 to AThread.Connection.Server.Bindings.Count-1 do begin
    RichEdit1.Lines.Add(AThread.Connection.Server.Bindings.Items[g].PeerIP);
  end;
  try
    Clients.LockList.Remove(ActClient);
  finally
    Clients.UnlockList;
  end;
  FreeMem(ActClient);
  AThread.Data := nil;
end;

PM MAIL   Вверх
MetalFan
Дата 7.1.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



а если посмотреть у AThread.Connection ?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
xloff
Дата 7.1.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Нашел. Так видит IP - AThread.Connection.Socket.Binding.PeerIP.
Вот еще, если клиент отрубается через диспетчер задач, либо теряется связь, событие onDisconnect ничего не ловит. А нужно постоянно знать список подключенных. Какой алгоритм будет проще, либо может в Indy есть функции, чтобы поддерживать список клиентов?

Сам думаю сделать так:
 От клиента через определенный интервал посылать пакет о том, что подключение активно и засекать время на сервере о приходе этого пакета. На сервере сделать таймер и через определенно кол-во времени прогонять весь список подключенных и сравнивать время с неким средним значением.
Вообщем вариант совсем не идеальный, подскажите, может есть вариант лучше?
PM MAIL   Вверх
MetalFan
Дата 7.1.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



при попытке отправки данных некорректно отключенному клиенту наверняка в индях сгенерится исключение... вот его и лови


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.