IP Adresse auslesen

Alle Fragen zur Netzwerkkommunikation
Antworten
Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

IP Adresse auslesen

Beitrag von Komoluna »

Hallo Leute

Ich habe ein ganz simples Problem:

Ich möchte die IP-Adresse des Users abfragen.

Aber ich habe alle möglichen Foren, google und auch .pas Units danach durchsucht, aber nix gefunden.
und nun hoffe ich, dass mir einer(oder eine) von euch helfen kann.

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: IP Adresse auslesen

Beitrag von Socke »

Komoluna hat geschrieben:Ich möchte die IP-Adresse des Users abfragen.

Für deine Gedanken:
Du hast eine verteilte Anwendung (das heißt: sie arbeitet über ein Netzwerk). Ob du in einer Client-Server- oder Peer-to-Peer-Umgebung bist, spielt hier keine Rolle.

In Netzwerken hast du üblicherweise ein Verbindung zwischen einem Client (Sender) und Server (Listener). Du möchtest am Listener wissen, wer (welche Adresse) dein Sender ist.

Wie das geht ist abhängig davon, welches Netzwerk du verwendest und wie du darauf zugreifst. Dazu kann mir auch Google (und google ist allwissend ;-)), nichts sagen.

So verbleibe ich voller Hoffnung auf göttliche oder deine Eingaben mit freundlichen Grüßen
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: IP Adresse auslesen

Beitrag von mschnell »

Komoluna hat geschrieben:Ich möchte die IP-Adresse des Users abfragen.

Vermutlich meinst Du "Die IP-Adresse des Recghners, auf dem das Perogramm läuft."

Die IP-Adresse gibt es aber nicht. Der Rechner kann keine, eine oder mehrere IP-Adressen haben, je nachdem wie viele (virtuelle) Netzwerk-Anschlüsse aktiv sind, die jeder eine eigene IP-Adresse haben.

-Michael

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: IP Adresse auslesen

Beitrag von gocher »

Z.B. wenn Du die IP ermitteln willst mit der Du ins Internet gehst:
http://checkip.dyndns.org/
und das Ergebnis (result) mit

Code: Alles auswählen

result := Copy(result, Pos('Current IP Address: ', result) + 20, Pos('</body', result) - Pos(':', result) - 2);

bearbeiten!
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: IP Adresse auslesen

Beitrag von gocher »

Nun die kleine Lösung für Windows, der folgende Code liefert Dir
-> Rechner.Netz(IP)
z.B.: mein-Rechner.fritz.box(192.168.178.35)

Code: Alles auswählen

uses Winsock;
...
  function NameIP():string;
  type
    Name = array[0..100] of Char;
    PName = ^Name;
  var
    IPaddr: string;
    HEnt: pHostEnt;
    HName: PName;
    WSAData: TWSAData;
    ii: dword;
  begin
    if WSAStartup($0101, WSAData) <> 0 then
      raise Exception.create( 'Winsock is not responding.' )
    else
    begin
      IPaddr := '';
      New(HName);
      if GetHostName(HName^, SizeOf(Name)) = 0 then
      begin
        HEnt := GetHostByName(HName^);
        IPaddr := Format('%s',[iNet_ntoa(PInAddr(HEnt^.h_addr_list^)^)]);
        ii:=inet_addr(pchar(IPaddr));
        HEnt := GetHostByAddr(@ii,sizeof(ii),PF_INET);
        result := HEnt^.h_name + '(' + IPaddr +')';
      end
      else
      case WSAGetLastError of
        WSANOTINITIALISED:raise Exception.create('WSANotInitialised');
        WSAENETDOWN      :raise Exception.create('WSAENetDown');
        WSAEINPROGRESS   :raise Exception.create('WSAEInProgress');
      end;
      Dispose(HName);
      WSACleanup;
    end;
  end;
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: IP Adresse auslesen

Beitrag von carli »

Wenn du die IP-Adressen eh an dich übermitteln willst, musst du das Programm nur automatisch eine Webadresse aufrufen/abrufen lassen, die die IP-Adressen der User mitloggt.

creed steiger
Beiträge: 957
Registriert: Mo 11. Sep 2006, 22:56

Re: IP Adresse auslesen

Beitrag von creed steiger »

carli hat geschrieben:Wenn du die IP-Adressen eh an dich übermitteln willst, musst du das Programm nur automatisch eine Webadresse aufrufen/abrufen lassen, die die IP-Adressen der User mitloggt.


Das kann auch nur die Adresse der Routers sein.

Kommt drauf an was erreicht werden soll,aber so einfach wie die Anforderung klingt ist sie nicht.
(Mehrere Netzwerkkarten,Internetzugang über Router oder Proxy usw usf)

Man müsste schon wissen um was es genau geht.

Antworten