Autor |
Beitrag |
ebi
      
Beiträge: 23
|
Verfasst: Fr 11.10.02 21:21
Hi ich habe mich schon tot gesucht aber immer nur funktionen gefunden, die alle aktuellen IP's des PC's wiedergeben.
DAS WILL ICH NICHT!
Weil viele nicht wissen welche IP die Internet Verbindungs IP ist und dann die LAN IP nehmen.
Mir würde auch schon reichen, wenn man in einem ("Aufklappfeld" ich habe keine Ahnung wie das heißt) die Lan Karte (Netzwerkkarte und/oder das Modem auswählen könnte und dann dazu die IP ermittelt wird.
Und bitte keine LINKS!!!!!!!!!!!!
Ich habe schon alles mögliche durchsucht.
HELLLLLLLLLPPPPPPPP!!!!!!!
_________________ Greetings EBI
|
|
FriFra
      
Beiträge: 557
Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
|
Verfasst: Fr 11.10.02 23:51
 Wenn Du alle IPs hast, kannst Du IPs ausschliessen, welche mit 127, 192 oder 0 (lokale IPs) beginnen.
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Sa 12.10.02 16:53
Zitat: | Wenn Du alle IPs hast, kannst Du IPs ausschliessen, welche mit 127, 192 oder 0 (lokale IPs) beginnen. |
Das würde aber trotzdem nicht alle IPs ausschließen. Z.B. der Router, an dem ich hänge hat einen DNS-Server mit der IP 192.168.122... .
Was ich mir aber vorstellen könnte, was funktioniert, ist, den eigenen Rechner anzupingen (über den Computernamen). Um herrauszufinden, was der eigene Computername ist, kann man folgenden Code benutzen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| function GetOwnComputerName: string; var Buffer: array[0..MAX_COMPUTERNAME_LENGTH+1] of Char; Size: DWORD; begin size:=1024; Windows.GetComputerName(Buffer, Size); Result := StrPas(Buffer); end; |
@ebi, wäre nett, wenn du das mal ausprobieren könntest und dann wieder über den Erfolg/Misserfolg posten würdest. Interessiert mich nämlich auch, ob das funktioniert  .
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Sa 12.10.02 16:58
Ups, mir fällt gerade auf, das ich da was falsches geposted habe. Hier geht's ja um die Internet-IP  . Nun ja, auch egal.
Aber um die Internet IP rauszufinden kann man diese Funktion benutzen: www.auq.de/viewtopic.php?t=294
Du meinst doch die IP, die dir, wenn du dich ins Internet einwählst, zugewiesen wird!? In diesem fall hat die Netzwerkkarte doch gar nichts famit zu tun...
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
|
|
FriFra
      
Beiträge: 557
Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
|
Verfasst: Sa 12.10.02 17:00
O'rallY hat folgendes geschrieben: | Z.B. der Router, an dem ich hänge hat einen DNS-Server mit der IP 192.168.122... . |
Der DNS wäre ja nach der von mir vorgeschlagenen Regel auch ausgeschlossen! Ausserdem hat kein Rechner hinter einem Router eine vom ISP zugewiesene IP sondern immer eine lokale IP also in der Regel 192... (ausser ein Spielkind hat was anderes eingestellt  ). In der Frage ging es aber um eine direkte connection.
|
|
ebi 
      
Beiträge: 23
|
Verfasst: Sa 12.10.02 21:17
erstmal DANKE!!!!
Aber kannst du FriFra mir eben eine Procedur schreiben, die die NICH INTERNET IPs ausschließt???
IPs werden in einem MemoFeld ausgegeben. Pro IP eine Zeile.
Ich kann das jetzt nicht so auf die schnelle und habe auch keine zeit dafür.
Bitte
_________________ Greetings EBI
|
|
ebi 
      
Beiträge: 23
|
Verfasst: Sa 12.10.02 21:31
So ich zu Hause, habe aber als IP fürs Netzwerk z.B. 169
Die würde dann aber als "INTERNET IP" erkannt werden, oder nicht???
??????????????????????????????
_________________ Greetings EBI
|
|
FriFra
      
Beiträge: 557
Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
|
Verfasst: Sa 12.10.02 23:05
ebi hat folgendes geschrieben: | So ich zu Hause, habe aber als IP fürs Netzwerk z.B. 169
Die würde dann aber als "INTERNET IP" erkannt werden, oder nicht??? |
Das ist ein Sonderfall, der abgefangen werden kann. Wenn man den Filter für lokale IP's editierbar macht, kann der User sein lokales IP-range ausschliessen.
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: 62:
| uses Winsock;
{...}
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 LocalIPs: Tstrings; begin {Hier müssen die lokalen IP's ausgegeben werden Um die Sache dynamisch zu halten kann man dem User z.B. die Möglichkeit geben diese daten über eine ini zu verändern} Result.Add('0.'); Result.Add('127.'); Result.Add('192.'); end;
procedure TForm1.Button1Click(Sender: TObject); var n, m :integer; IsLoca l:boolean; begin for n:=0 to GetIps.Count-1 do begin IsLocal := False; for m:=0 to LocalIps.Count-1 do begin if Copy(GetIPs[n],1,Length(LocalIPs[m])) = LocalIPs[m] then begin IsLocal := True; Break; end; if IsLocal = False then Memo1.Lines.Add(GetIps[n]); end; end; end; |
Dieser Code funktioniert allerdings nicht im Zusammenhang mit einem Router!
Achtung: Die Funktion GetIPs habe ich mal irgendwo her kopiert... diese sollte nicht zu häufig aufgerufen werden, da sie einen Memory leak (Applikation '"frisst" Arbeitsspeicher...) verursacht. Was der genaue Fehler ist weiss ich allerdings nicht.
|
|
|