Главная страница
    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.033 c
14-1095937517
Nikolay M.
2004-09-23 15:05
2004.10.10
Авторам вопросов "Что лучше делать: ролбэк или комит" посвящается


14-1095775437
Cosinus
2004-09-21 18:03
2004.10.10
FAQ


4-1094474007
edthon
2004-09-06 16:33
2004.10.10
СОМ-порт, задержка между командами


8-1090041633
ИМХО
2004-07-17 09:20
2004.10.10
Список аудиокодеков


14-1095429384
Sekr
2004-09-17 17:56
2004.10.10
Как устанавливать компоненты под Delphi7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский