Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Как определить 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
14-1095651043
Мазут Береговой
2004-09-20 07:30
2004.10.10
Вопрос по железу. По старому железу.


9-1086296342
Inspired
2004-06-04 00:59
2004.10.10
Как вращать, например, квадрат без искажений в OpenGL?


3-1095243691
Viper
2004-09-15 14:21
2004.10.10
Результат TQuery и TCombobox


8-1090167181
Wistful
2004-07-18 20:13
2004.10.10
WaveOutWrite???


3-1094748738
Vigo
2004-09-09 20:52
2004.10.10
Вопрос по работе с таблицами БД через TClientDataSet