![]() |
Wie bestehende LAN-Verbindungen (IP's) ermitteln?
:hi:
ich wollte ein kleines tool erstellen, bei dem man prüft zu welchen IP's eine Netzwerkverbindung (LAN) besteht und diese dann in einer ListBox oder Memo ausgeben. Problem: Ich habe noch nie etwas in dieser Richtung getan (mit Delphi). Bei meinen Recherchen bin ich auf TidICMPClient und IsNetWorkAlive gestoßen. TidICMPClient habe ich bereits getestet, und ich nehme an, dass die Ausgabe (Zahl) beim OnReply dem Port entspricht (welchem kA). Wie und mit welchen Komponenten kann ich die oben beschriebene Idee am besten, unkompliziertesten, einfachsten UND schnellsten (kurz gesagt: am TOLLSTEN :mrgreen:) umsetzen:?: bin für jede antwort dankbar! :) |
Re: Wie bestehende LAN-Verbindungen (IP's) ermitteln?
Delphi-Quellcode:
Mit Freundlichen grüßen von google.de und SwissDelphiCenter.ch :zwinker:
type
PNetResourceArray = ^TNetResourceArray; TNetResourceArray = array[0..100] of TNetResource; function CreateNetResourceList(ResourceType: DWord; NetResource: PNetResource; out Entries: DWord; out List: PNetResourceArray): Boolean; var EnumHandle: THandle; BufSize: DWord; Res: DWord; begin Result := False; List := Nil; Entries := 0; if WNetOpenEnum(RESOURCE_GLOBALNET, ResourceType, 0, NetResource, EnumHandle) = NO_ERROR then begin try BufSize := $4000; // 16 kByte GetMem(List, BufSize); try repeat Entries := DWord(-1); FillChar(List^, BufSize, 0); Res := WNetEnumResource(EnumHandle, Entries, List, BufSize); if Res = ERROR_MORE_DATA then begin ReAllocMem(List, BufSize); end; until Res <> ERROR_MORE_DATA; Result := Res = NO_ERROR; if not Result then begin FreeMem(List); List := Nil; Entries := 0; end; except FreeMem(List); raise; end; finally WNetCloseEnum(EnumHandle); end; end; end; procedure ScanNetworkResources(ResourceType, DisplayType: DWord; List: TStrings); procedure ScanLevel(NetResource: PNetResource); var Entries: DWord; NetResourceList: PNetResourceArray; i: Integer; begin if CreateNetResourceList(ResourceType, NetResource, Entries, NetResourceList) then try for i := 0 to Integer(Entries) - 1 do begin if (DisplayType = RESOURCEDISPLAYTYPE_GENERIC) or (NetResourceList[i].dwDisplayType = DisplayType) then begin List.AddObject(NetResourceList[i].lpRemoteName, Pointer(NetResourceList[i].dwDisplayType)); end; if (NetResourceList[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then ScanLevel(@NetResourceList[i]); end; finally FreeMem(NetResourceList); end; end; begin ScanLevel(Nil); end; procedure TForm1.Button1Click(Sender: TObject); begin ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, ListBox1.Items); end; |
Re: Wie bestehende LAN-Verbindungen (IP's) ermitteln?
-_- danke. werde es mal bei der LAN nachher testen. Also das läuft schon mal ohne Zicken zu machen :D
:thumb: |
Re: Wie bestehende LAN-Verbindungen (IP's) ermitteln?
:hi:
scheint zu funktionieren - danke! problem nur, dass er den rechnernamen ausgibt, ich bräuchte noch die IP. kannst du mir verraten wie auch an diese komme. (deswegen in im topic des threads "(IP's)" :mrgreen: aber der grundstein ist gesetzt, thx :thumb: [edit] kurz gesagt: ich möchte die IP anzeigen, mit welcher der eigene PC über LAN eine verbindung hat [/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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-2025 by Thomas Breitkreuz