Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Indy Ip Ermitteln (https://www.delphipraxis.net/23709-indy-ip-ermitteln.html)

Vjay 8. Jun 2004 15:49


Indy Ip Ermitteln
 
Hi und zwar habe ich einen TIdTCPServer, dieser wird von mehreren Clients kontaktiert.

Ich will die Clients über ihre IPs auseinander halten, wie bekomme ich diese raus?

Delphi-Quellcode:
 procedure TMainForm.CommandServerTIdCommandHandlerblablaCommand( ASender: TIdCommand);
 begin
  ASender.Thread.Connection.???
 end;

Neuni 8. Jun 2004 15:50

Re: Indy Ip Ermitteln
 
Du könntest einfach über den Client die IP an den server senden. Also wenn der Client connected, schickt er automatisch seine IP an den Server.

Vjay 8. Jun 2004 15:52

Re: Indy Ip Ermitteln
 
Geht nicht, Clients könnten mehrere Netzwerkkarten haben etc etc.

Kann ich nicht irgendwie auf die Socket Informationen zugreifen ?? Dem Server muss ja logischerweise die IP + Port des Clients bekannt sein.

Vjay 8. Jul 2004 10:11

Re: Indy Ip Ermitteln
 
Ich habs rausgefunden.

ASender.Thread.Connection.Socket.Binding.PeerIP;

-lx- 19. Aug 2006 19:39

Re: Indy Ip Ermitteln
 
Eine Frage dazu: Wie kann der TIdTCPServer (Indy10) seine eigene IP ermitteln, sobald er beim aufrufen des programms gestratt wird.
Also nur gestratet wird - ohne jegliche ein- oder ausgehende Verbindungen.


Delphi-Quellcode:
Memo1.Lines.Add(AContext.Binding.IP) ;      // IP Adresse des Servers
Memo1.Lines.Add(IntToStr(AContext.Binding.PeerPort)) ;
So kann ich bei TIdTCPServer Eriegnissen die IP und en Port des Servers herausbekommen.
Jedoch will ich dass IP und Port des Servers sofort beim öffnen es programms angezeigt werden.

Wie kann ich das bsp. im OnCreate -Event des Hauptformulars einbetten?


Wieso wird mit " AContext.Binding.PeerPort " nicht der richtige Port angeiegt? Bei mir zeigt er 2011 an jedoch wurde 50 005 eingetragen !?




mfg
Cya

Klaus01 19. Aug 2006 20:40

Re: Indy Ip Ermitteln
 
Guten Abend,
Delphi-Quellcode:
  function GetLocalIPs: String;
    type PPInAddr= ^PInAddr;
    var
      wsaData : TWSAData;
      HostInfo : PHostEnt;
      HostName : Array[0..255] of Char;
      Addr    : PPInAddr;
    begin
      Result:='';
      if WSAStartup($0102, wsaData) <> 0 then
        Exit;
      try
        if GetHostName(HostName, SizeOf(HostName)) <> 0 then
          Exit;
        HostInfo:= GetHostByName(HostName);
        if HostInfo=nil then
          Exit;
        Addr:=Pointer(HostInfo^.h_addr_list);
        if (Addr=nil) or (Addr^=nil) then
          Exit;
        Result:=StrPas(inet_ntoa(Addr^^));
        inc(Addr);
        while Addr^ <> nil do begin
          Result:=Result+^M^J+StrPas(inet_ntoa(Addr^^));
          inc(Addr);
        end;
      finally
        WSACleanup;
      end;
    end;
Die Funktion zeigt Dir alle IP Adressen des Rechners.
Die WinSock und die NB30 Unit müssen dazu eingebunden werden.

Oder mit IDIPWatch sollte das auch zu erschlagen sein.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz