Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.037 c
1-1096248121
Ктото
2004-09-27 05:22
2004.10.10
Посоветуйте пожалуйста статью по созданию экспертов для


1-1095758581
Goga
2004-09-21 13:23
2004.10.10
Управление TADODataSet из TThread


3-1094656210
SH
2004-09-08 19:10
2004.10.10
ADOQuery - парочка запросов в одном


14-1095452403
Chess
2004-09-18 00:20
2004.10.10
Unicode to RichEdit


14-1095131033
Kair()
2004-09-14 07:03
2004.10.10





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский