Форум: "Сети";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
ВнизTIdTCPServer - узнать IP или имя кто к нему приконнектился... Найти похожие ветки
← →
Layner © (2006-11-17 11:43) [0]В примере "IdTCPDemo" у них видимо ошибка, вместо имени клиента возвращается имя сервера... как следствие, не понятно, кто законнектился...
procedure TServerFrmMain.ServerConnect(AThread: TIdPeerThread);
var
NewClient: PClient;
begin
GetMem(NewClient, SizeOf(TClient));
{! в сл. строке не точность...}
NewClient.DNS := AThread.Connection.LocalName; {! возвращает имя сервера, а не клиента!}
NewClient.Connected := Now;
NewClient.LastAction := NewClient.Connected;
NewClient.Thread :=AThread;
AThread.Data:=TObject(NewClient);
try
Clients.LockList.Add(NewClient);
finally
Clients.UnlockList;
end;
Protocol.Lines.Add(TimeToStr(Time)+" Connection from ""+NewClient.DNS+""");
end;
← →
Layner © (2006-11-17 11:56) [1]Дошло :)
AThread.Connection.Socket.Binding.PeerIP
← →
Сергей М. © (2006-11-17 11:57) [2]Клиент не обязан фигурировать в DNS, так что затея вряд ли оправдана.
Гораздо полезней знать IP-адрес клиента, нежели имя его хоста, которого может и не быть.
А вот это
Protocol.Lines.Add
делать в дан.контексте не допустимо - обработчик иполняется в контексте потока AThread, а не в основном потоке
← →
Reindeer Moss Eater © (2006-11-17 11:57) [3]AThread.Connection.LocalName; {! возвращает имя сервера, а не клиента!}
А с какого перепугу локалнэйм серверного треда должно быть клиентом?
← →
Layner © (2006-11-17 13:08) [4]
Reindeer Moss Eater © (17.11.06 11:57)
Может я что не понял, но если у меня логинятся 3 клиента, а в СЕРВЕРЕ пишется 3 раза
10:35:59 Connection from "Vasia" (Это конект с машины 192.168.0.51)
10:36:59 Connection from "Vasia" (Это конект с машины 192.168.0.52)
10:37:59 Connection from "Vasia" (Это конект с машины 192.168.0.53)
Или пример такой... в общем не удобно, переделал :)
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.057 c