Форум: "Сети";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
ВнизКак определить 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c