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

Вниз

Как определить IP отконнективающегося клиента (idTCPClient)   Найти похожие ветки 

 
banderas ©   (2004-07-21 18:10) [0]

Когда клиент присоединяется то можно узнать его IP таким способом: AThread.Connection.Socket.Binding.PeerIP А вот как узнать IP отсоединившегося.


 
Reindeer Moss Eater ©   (2004-07-21 18:12) [1]

IP отсоединившегося не узнаешь.
IP отсоединияющегося узанешь так же как и присоединяющегося.


 
banderas ©   (2004-07-21 18:24) [2]

Спасибо попробую.


 
banderas ©   (2004-07-21 18:51) [3]

А как узнать какие ip в ДАННЫЙ момент подключены к серваку ? (idTCPServer)


 
DelphiN! ©   (2004-07-30 11:08) [4]

TServerSocket.Socket.Connections[n].RemoteAddress;


 
Reindeer Moss Eater ©   (2004-07-30 11:11) [5]

А как узнать какие ip в ДАННЫЙ момент подключены к серваку ? (idTCPServer)

А ты умеешь определять какие IP были подключены не в ДАННЫЙ момент к серверу?


 
Reindeer Moss Eater ©   (2004-07-30 11:12) [6]

и какие будут подключены не в ДАННЫЙ момент а в будущем?


 
MetalFan ©   (2004-07-30 12:01) [7]


> TServerSocket.Socket.Connections[n].RemoteAddress;

для Indy не прокатит вроде!
для Инди примерно так:
lList := FServer.TCPServer.Threads.LockList;
for i := 0 to pred(lList.count) do
SomeMemo.lines.add(TIdPeerThread(lList.Items[i]).Connection.Binding.PeerIP);
FServer.TCPServer.Threads.UnlockList;


 
MetalFan ©   (2004-07-30 12:03) [8]

ччерт!
lList := FServer.TCPServer.Threads.LockList;
читать как
llist := IdTCPServer.Threads.LockList;


 
alienserg   (2004-07-31 17:55) [9]

banderas ©   (21.07.04 18:10)  

В поставке Indy есть пример IndyDemos\Chat\Server (я об этом уже кажется 3-й раз упоминаю)
В нем в событии IdTcpServer.OnConnect на каждого пришедшего юзера заводится структура(там она называется TSimpleUser) и прикручивается к треду клиента. И список клиентов держится в списке Clients.
В момент дисконнекта структура клиента исключается из списка Clients.

Client := TSimpleUser.Create;
...
Client.IP := AThread.Connection.Socket.Binding.PeerIP;
//^^^^^^^^ вставь вот это  и ты в любой момент можешь
// пройтись по списку Clients и определить кто
// и по какому IP сейчас подключен.
// Как пройтись по списку, посмотри в процедуре Broadcast
{ Assign the thread to it for ease in finding }
Client.Thread := AThread;
{ Assign it to the thread so we can identify it later }
AThread.Data := Client;
{ Add it to the clients list }
Clients.Add(Client);


В момент дисконнекта анализируй
TSimpleUser(AThread.Data).IP
Там будет то, что тебе надо.
Но для начала попробуй в момент дисконнекта
AThread.Connection.Socket.Binding.PeerIP;
Скорее всего и там то, что тебе надо :)



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

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

Наверх




Память: 0.48 MB
Время: 0.028 c
14-1095421946
Klerk
2004-09-17 15:52
2004.10.10
Может кто знает, где скачать бесплатно?


6-1091184051
Гость
2004-07-30 14:40
2004.10.10
WEBBROWSEr1


6-1091450984
mazepa
2004-08-02 16:49
2004.10.10
лажа с sendtext


14-1095421920
borrris
2004-09-17 15:52
2004.10.10
неужели в Москве приезжим так непросто?


1-1096159405
Leaner
2004-09-26 04:43
2004.10.10
Ошибка: C0000008 в строке CloseHandle(FHand);