Thema: Delphi Netzwerk getrennt

Einzelnen Beitrag anzeigen

ken_jones

Registriert seit: 16. Mai 2005
Ort: Luzern
154 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Netzwerk getrennt

  Alt 3. Feb 2006, 23:10
So etwas könnte gehen:

Delphi-Quellcode:
function GetLocalIPs(bGetAll: Boolean = True): string;
type
  PPInAddr = ^PInAddr;
var
  wsadata : TWSAData;
  hostinfo : PHostEnt;
  addr : PPInAddr;
begin
  Result := '';

  if(WSAStartUp($0101,wsadata) = 0) then // $0101 = Version 1.1 (Achtung: Ver 2.0 wäre $0002)
  try
    hostinfo := gethostbyname(nil);
    if(hostinfo <> nil) then begin
      addr := pointer(hostinfo^.h_addr_list);

      while(addr^ <> nil) do begin
        Result := Result + inet_ntoa(addr^^);
        If not bGetAll then Break;
        inc(addr);
        If addr^ <> nil then Result := Result + ^M^J;
      end;
    end;
  finally
    WSACleanUp;
  end;
end;
Der Parameter bGetAll gibt an, ob er nur die erste HauptIP (False) oder alle vorhandenen IPs (True) auslesen soll.
Ist kein Netzwerk (auch kein IP Stack,etc) vorhanden, so gibts einen leeren String zurück.
Gibts einen String zurück, so kann folgendes geprüft werden:


If Result = '127.0.0.1' then ... // LAN Kabel ausgesteck oder Netzwerkverbindung getrennt
else ... // Mit LAN verbunden
  Mit Zitat antworten Zitat