Eigene (Internet)IP rausfinden
Moin,
jo, ich weiss, es gab schon genug solcher Themen... aber eher mit nur "unsauberen" Methoden, von wegen IP per Seite ausgeben lassen, aber das kostet Zeit (egal wie schnell). Gibt es eine "richtige" Methode? wenn ich "ipconfig" aufrufe, zeigt mir das Programm doch auch meine IP an und ich denke nicht das Microsoft das über ne Seite macht ;) Zitat:
|
Re: Eigene (Internet)IP rausfinden
Hallo,
lad dir auf meiner Homepage (www.free30.com/florian) unter Delphi die Unit Neo.pas runter. Da ist eine Funktion GetIpAddress dabei, die ihre Daten nicht von einer Seite holt. Florian |
Re: Eigene (Internet)IP rausfinden
Moin Florian,
das Problem ist, das ich 2 IPS habe (siehe meinen ersten Post mit dem Zitat) und mir die Funktion aus der neo.pas, die erste IP anzeigt. Die zweite ist aber meine Internet IP |
Re: Eigene (Internet)IP rausfinden
|
Re: Eigene (Internet)IP rausfinden
Das Problem ergibt sich, wenn ein Router dazwischen hängt, dann gibt diese Funktion nur lokale IPs aus. Sollte das Programm für mehr als nur zum Eigenbedarf gedacht sein, reicht diese Funktion dann nicht mehr.
|
Re: Eigene (Internet)IP rausfinden
Moin scp,
war das auf die FUnktion der neo-unit bezogen oder auf diese: http://www.swissdelphicenter.ch/de/showcode.php?id=67 hier? Übrigens was ich mich bei dem Code frage...
Delphi-Quellcode:
Wieso ist das Array gerade 11 Elemente gross?
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; Ist das die maximale anzahl der IPS die man haben kann oder wie? |
Re: Eigene (Internet)IP rausfinden
Es bezieht sich auf beide Routinen, da beide diesselben APIs aufrufen.
[0..10] ist denke ich mal willkürlich gewählt. |
Re: Eigene (Internet)IP rausfinden
Zitat:
|
Re: Eigene (Internet)IP rausfinden
Delphi-Quellcode:
Es wird ja ein PChar verlangt, also ein Zeiger auf ein CharArray
GetHostName(@Buffer, Length(Buffer));
und Len ist die Länge in Zeichen, und nicht in Byte, also Length statt SizeOf Könnte aber sein, daß du die Ansiversion der Funktion bei dir definiert hast, dann zusätzlich noch Array of AnsiChar |
Re: Eigene (Internet)IP rausfinden
Vielleicht mit
Delphi-Quellcode:
:?: Ich hab aber kein D2009, um das auszuprobieren.
GetHostName(@Buffer[0], SizeOf(Buffer));
|
Re: Eigene (Internet)IP rausfinden
Zitat:
Siehe hier:
Code:
Meine IP-Adresse und ich bin auch im Internet.
Verbindungsspezifisches DNS-Suffix:
Beschreibung. . . . . . . . . . . : SiS 900-basierte PCI-Fast Ethernet-Adapter Physikalische Adresse . . . . . . : 00-07-95-FB-A1-04 DHCP aktiviert. . . . . . . . . . : Nein IP-Adresse. . . . . . . . . . . . : 192.168.2.100 Subnetzmaske. . . . . . . . . . . : 255.255.255.0 Standardgateway . . . . . . . . . : 192.168.2.1 DNS-Server. . . . . . . . . . . . : 192.168.2.1 Willst du die IP-Adresse die der Provider deinem Router zugewiesen hat, musst du entweder direkt den Router fragen oder eben diesen Weg über eine Internetseite gehen, die dir deine IP nennt. |
Re: Eigene (Internet)IP rausfinden
Nja, das wird er nach 4 Jahren vermutlich verinnerlicht haben :mrgreen:
|
Re: Eigene (Internet)IP rausfinden
Zitat:
Delphi-Quellcode:
Vielen Dank
function getComputerIPs: Tstrings;
type TaPInAddr = array[0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var phe: PHostEnt; pptr: PaPInAddr; Buffer: array [0..63] of PAnsiChar; I: Integer; GInitData: TWSAData; begin WSAStartup($101, GInitData); Result := TstringList.Create; Result.Clear; GetHostName(@Buffer[0], SizeOf(Buffer)); phe := GetHostByName(@Buffer[0]); 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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz