![]() |
Internet IP herausfinden...
Hi,
ich denke die Frage gabs schon mal aber ich habe nix in der Suche und bei Google gefunden, deshalb stelle ich die Frage noch mal hier: Ich möchte meine Internet-IP herausfinden und dann mit einem Label anzeigen... Wie kann ich das machen? Ich erinnere mich dunkel dass ic´h mal irgendwo gelesenhabe, dass man auf ner HP (irgendwie ![]() MfG Matthias Volland |
Re: Internet IP herausfinden...
parse den text von
![]() |
Re: Internet IP herausfinden...
Hi,
erst mal danke für die Antwort, aber genau das ist ja mein Problem - ich weis nicht wie das geht!!! MfG Matthias Volland |
Re: Internet IP herausfinden...
Delphi-Quellcode:
uses ..., WinSock;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
function GetIPAddress: String; var PHoste: PHostEnt; Buffer: array [0..100] of Char; WSAData: TWSADATA; begin Result := ''; if WSAStartup($0101, WSAData) <> 0 then Exit; GetHostName(Buffer, SizeOf(Buffer)); PHoste := GetHostByName(buffer); if phoste = nil then Result := '127.0.0.1' else Result := StrPas(Inet_NToa(PInAddr(phoste^.h_addr_list^)^)); WSACleanup; end; begin ShowMessage(GetIPAddress); end; |
Re: Internet IP herausfinden...
Hi Daniel B,
den Quelltext hab ich, aber der zeigt nur die lokale IP an, mir gehts aber um die Internet IP!!! MfG Matthias Volland |
Re: Internet IP herausfinden...
Ich kriege damit meine Internet-IP raus.
|
Re: Internet IP herausfinden...
Hängst du eventuell hinter einem Router?
|
Re: Internet IP herausfinden...
Nee, ich habe keinen Router, nur das DSL-Modem...
MfG Matthias Volland |
Re: Internet IP herausfinden...
Hab auch nur ein DSL-Modem dran, nix Netzwerk oder ähnliches. Es muss auch bei Dir gehen, was bekommst Du denn in der Message angezeigt?
|
Re: Internet IP herausfinden...
Da steht nur 192.168.1.1 und das ist meine lokale IP,
ich hab auch mal im Internet geguckt, die ist halt anders!!! MfG Matthias Volland |
Re: Internet IP herausfinden...
Die Funktion GetIpAddress von Daniel beachtet nicht, dass GetHostByName mehrere IP Adressen zurückliefern kann. Das Ergebnis leifert nur die erste IP Adresse in der Liste.
Versuchs mal damit: -GetIPs liefert dir ne Liste mit allen IP Adressen des PCs -GetInetIP versucht die Adresse der Verbindung, die das point-to-point Protokol verwendet (dieses Protokol wird von den meisten Provider verwendet) zu holen. Falls das nicht klappt (also keine PPP Verbindung da ist) wird die erste(*) IP von GetIPs zurückgeliefert. Somit hat man schon mit einer hohen Wahrscheinlichkeit die richtige IP. (*)Du könntest die Funktion noch erweitern: GetInetIP könnte noch alle lokalen IP Adressen, die GetIPs liefert, rausfiltern. Und falls das alle IPs entfernen würde, dann könntest du noch die ![]()
Delphi-Quellcode:
function GetIPs: TStrings;
type TaPInAddr = array[0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var phe: PHostEnt; pptr: PaPInAddr; Buffer: array[0..63] of Char; I: Integer; GInitData: TWSAData; begin WSAStartup($101, GInitData); Result := TstringList.Create; Result.Clear; GetHostName(Buffer, SizeOf(Buffer)); phe := GetHostByName(buffer); if phe = nil then Exit; pPtr := PaPInAddr(phe^.h_addr_list); I := 0; while pPtr^[I] <> nil do begin Result.Add(inet_ntoa(pptr^[I]^)); Inc(I); end; WSACleanup; end; function GetInetIP: string; var IpHlpModule: THandle; GetAdaptersInfo: function (pAdapterInfo: PTIP_ADAPTER_INFO; pOutBufLen: PULONG): DWORD; stdcall; pAdapterInfo, old: PTIP_ADAPTER_INFO; len: integer; begin try result:=GetIPs[0]; except result:='0.0.0.0'; end; IpHlpModule:=LoadLibrary(IpHlpDLL); try if IpHlpModule=0 then begin exit; end; GetAdaptersInfo:=GetProcAddress(IpHlpModule, 'GetAdaptersInfo'); getmem(pAdapterInfo, sizeof(TIP_ADAPTER_INFO)); old:=pAdapterInfo; try len:=sizeof(TIP_ADAPTER_INFO); GetAdaptersInfo(pAdapterInfo, @len); result:=pAdapterInfo^.IPAddressList.IpAddress; while pAdapterInfo<>nil do begin if pAdapterInfo^.aType=IF_PPP_ADAPTERTYPE then result:=pAdapterInfo^.IPAddressList.IpAddress; pAdapterInfo:=pAdapterInfo.Next; end; finally freemem(old); end; finally if IpHlpModule<>0 then begin FreeLibrary(IpHlpModule); end; end; end; |
Re: Internet IP herausfinden...
Hi,
erst mal danke für die ausführliche Hilfe!!! Das funktioniert teilweise: Die erste Funktion (GetIPs) liefert mir beide Adressen. Bei der zweiten Fkt. nennt mir der Compiler nur einige Fehler (z.B. kennt er eine function nicht...) - keine ahnung aber eigtentlich auch egal, denn die 1. Methode funktioniert ja!!! MfG Matthias Volland |
Re: Internet IP herausfinden...
weil folgendes fehlt:
Code:
type
TIP_ADDRESS_STRING = array[0..15] of char; PTIP_ADDR_STRING = ^TIP_ADDR_STRING; TIP_ADDR_STRING = packed record Next: PTIP_ADDR_STRING; IpAddress: TIP_ADDRESS_STRING; IpMask: TIP_ADDRESS_STRING; Context: DWORD; end; PTIP_ADAPTER_INFO = ^TIP_ADAPTER_INFO; TIP_ADAPTER_INFO = packed record Next: PTIP_ADAPTER_INFO; ComboIndex: DWORD; AdapterName: array[1..MAX_ADAPTER_NAME_LENGTH + 4] of char; Description: array[1..MAX_ADAPTER_DESCRIPTION_LENGTH + 4] of char; AddressLength: UINT; Address: array[1..MAX_ADAPTER_ADDRESS_LENGTH] of byte; Index: DWORD; aType: UINT; DHCPEnabled: UINT; CurrentIPAddress: PTIP_ADDR_STRING; IPAddressList: TIP_ADDR_STRING; GatewayList: TIP_ADDR_STRING; DHCPServer: TIP_ADDR_STRING; HaveWINS: BOOL; PrimaryWINSServer: TIP_ADDR_STRING; SecondaryWINSServer: TIP_ADDR_STRING; LeaseObtained: LongInt ; LeaseExpires: LongInt; SpareStuff: array [1..2000] of char ; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 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