Главная страница
    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.032 c
4-1094015053
HeKTO
2004-09-01 09:04
2004.10.10
Проводник (explorer)


3-1095254633
Ceval
2004-09-15 17:23
2004.10.10
Подскажите как сделать есть dbf-файл в нем поле Data


1-1095844550
Игорь_
2004-09-22 13:15
2004.10.10
Компоненты формы


3-1094676696
PSN
2004-09-09 00:51
2004.10.10
UPPER и COLLATE


4-1094214349
maxXP
2004-09-03 16:25
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский