Entwickler-Ecke
Internet / Netzwerk - Eigene IP?
Rool - Sa 23.11.02 17:46
Titel: Eigene IP?
Wie bekomme ich meine eigene IP? Also nicht die lokale sondern die, wenn man im Netz ist!
Henry - Sa 23.11.02 18:38
Hallo,
Diese Unit habe ich mal irgendwo in den Weiten des Internets oder einem Delphiforum gefunden (Ich möchte mich ja nicht mit fremden Federn schmücken). Leider weiß ich nicht mehr von wem die Unit ist :( Ich kann also nichts näheres dazu sagen. Funktioniert bei mir aber ganz gut, mit dem anzeigen der IP.
Du mußt dann folgendes aufrufen
Delphi-Quelltext
1:
| Label1.Caption := GetRASIP(1); |
damit erhältst die IP die Dein Provider dir beim einwählen gegeben hat.
Natürlich nicht vergessen Unit einzubinden :)
Unit siehe unten.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| unit InternetIP;
interface
uses Windows;
type PRasConn = ^TRasConn; TRasConn = record dwSize: DWORD; hRasConn: THandle; szEntryName: array[0..256] of char; szDeviceType: array[0..16] of char; szDeviceName: array[0..128] of char; end;
TRasPPPIP = record dwsize: DWORD; dwerror: DWORD; szlpAddress: array[0..15] of char; end;
function RASGetProjectionInfo(hRasConn: THandle; RasProjection: DWORD; var lpRasPPPIP: TRasPPPIP; var lpcb: DWORD): DWORD; stdcall;
function RASEnumConnections(lpRasConn: Pointer; var lpcb: DWORD; var lpcConnections: DWORD): DWORD; stdcall;
function GetRASIP(Nr: Integer): String;
implementation
function RASEnumConnections; external 'RASAPI32.DLL' name 'RasEnumConnectionsA'; function RASGetProjectionInfo; external 'RASAPI32.DLL' name 'RasGetProjectionInfoA';
function GetRASIP(Nr: Integer): String; var RasCon:Array[1..25] of TRasConn; RASSize, RASFilledInBuffer, RASIPSize: DWord; RASPPIp:TRasPPPIP; IPPas:Array[1..16] of Char; begin Result:=''; Rascon[1].dwSize := SizeOf(TRasConn); RASSize := SizeOf(TRasConn); if RasEnumConnections(@RasCon,RASSize,RASFilledInBuffer)=0 then begin RASPPIp.dwsize:=SizeOf(TRASPPPIp); RASIPSize:=SizeOf(TRASPPPIp); RASGetProjectionInfo(RasCon[Nr].hRasConn,$8021,RASPPIp,RASIPSize); Result:=RASPPIp.szlpAddress; end; end;
end. |
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt
Savage - So 24.11.02 11:55
Hi,
mit der Unit muss man jedoch vorsichtig sein, weil diese Funktion nur für Dial-Up Connections funktioniert. Funktionieren dürfte sie nicht bei Standleitungen oder Internetzugängen via Proxy.
MfG
Savage
Henry - So 24.11.02 14:44
Wie gesagt, ich habe sie nicht entwickelt.
Wenn mann sich aber über DFU einwählt funktioniert es.
Soviel kann ich dazu sagen.
Aber Danke für den Hinweis
patmann2001 - Mo 25.11.02 00:26
Hallo
Warum in die Ferne schweifen, wenn das gute liegt so nah? :roll:
Siehe mal den Thread [url=
http://www.entwickler-ecke.de/viewtopic.php?t=120]
Wie realisiere ich ein Internet-/Netzwerkchat? [/url] in unsem FAQ dort steht folgende Procedure drin.
| Zitat: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| 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; | |
Die benutze ich auch, sie gibt in der Line[0] die LAN IP zurück und in Line[1] die WAN IP. Ausserdem könnt ihr wie unter
Wie lese ich die Internet-IP aus? [
http://www.entwickler-ecke.de/viewtopic.php?t=294] im FAQ folgende Internetaddresse finden.
Damit könnt Ihr überprüfen ob euch die Procedure die richtige IP wiedergegeben hat.
cu Patmannd
Moderiert von
Tino: "auq.de" durch "entwickler-ecke.de" ersetzt
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!