![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить IP отконнективающегося клиента (idTCPClient) [D7, WinXP]
banderas © (2004-07-21 18:10:00)Когда клиент присоединяется то можно узнать его IP таким способом: AThread.Connection.Socket.Binding.PeerIP А вот как узнать IP отсоединившегося.
alienserg (2004-07-31 17:55:00) [1]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;
Скорее всего и там то, что тебе надо :)
MetalFan (2004-07-30 12:03:00) [2]ччерт!
lList := FServer.TCPServer.Threads.LockList;
читать как
llist := IdTCPServer.Threads.LockList;
MetalFan (2004-07-30 12:01:00) [3]
> 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;
Reindeer Moss Eater (2004-07-30 11:12:00) [4]и какие будутподключены не в ДАННЫЙ момент а в будущем?
Reindeer Moss Eater (2004-07-30 11:11:00) [5]А как узнать какие ip в ДАННЫЙ момент подключены к серваку ? (idTCPServer)
А ты умеешь определять какие IP былиподключены не в ДАННЫЙ момент к серверу?
DelphiN! (2004-07-30 11:08:00) [6]TServerSocket.Socket.Connections[n].RemoteAddress;
banderas (2004-07-21 18:51:00) [7]А как узнать какие ip в ДАННЫЙ момент подключены к серваку ? (idTCPServer)
banderas (2004-07-21 18:24:00) [8]Спасибо попробую.
Reindeer Moss Eater (2004-07-21 18:12:00) [9]IP отсоединившегося не узнаешь.
IP отсоединияющегося узанешь так же как и присоединяющегося.