AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi MAC-Adresse zu einer IP Adresse ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

MAC-Adresse zu einer IP Adresse ermitteln

Offene Frage von "CG2003"
Ein Thema von CG2003 · begonnen am 25. Okt 2009 · letzter Beitrag vom 26. Okt 2009
 
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#13

Re: MAC-Adresse zu einer IP Adresse ermitteln

  Alt 26. Okt 2009, 06:42
So, ich nutze jetzt folgende Funktion und hier bekomme ich den Fehler zurück, dass MacAddrLen 0 ist. Woran kann das liegen?

Delphi-Quellcode:
function SendARP(const DestIP, SrcIP: in_addr; pMacAddr: PULONG; var PhyAddrLen: ULONG): DWORD; stdcall; external 'IPHLPAPI.DLLname 'SendARP';

function GetMacAddr(const IPv4: String): String;
  const
    SrcIP: in_addr = (S_addr: 0);
  var
    DestIP: in_addr;
    MacAddr: array[0..5] of Byte;
    MacAddrLen, RC: DWORD;
    i: Integer;
begin
  Result := '';
  DestIP.S_addr := inet_addr(PAnsiChar(AnsiString(IPv4)));
  MacAddrLen := Length(MacAddr);
  // msdn.microsoft.com/e...aa366358(VS.85).aspx
  RC := SendARP(DestIP,SrcIP,@MacAddr,MacAddrLen);
  case RC of
    NO_ERROR:
      begin
        if (MacAddrLen = 6) then
          for i := 0 to 5 do begin
            if (i > 0) then
              Result := Result +'-';
            Result := Result +IntToHex(MacAddr[i],2);
          end
        else
          Result := 'Error: MacAddrLen='+IntToStr(MacAddrLen);
      end;
    ERROR_GEN_FAILURE:
      Result := 'ERROR_GEN_FAILURE';
    ERROR_INVALID_PARAMETER:
      Result := 'ERROR_INVALID_PARAMETER';
    ERROR_INVALID_USER_BUFFER:
      Result := 'ERROR_INVALID_USER_BUFFER';
    ERROR_BAD_NET_NAME:
      Result := 'ERROR_BAD_NET_NAME';
    ERROR_BUFFER_OVERFLOW:
      Result := 'ERROR_BUFFER_OVERFLOW';
    else
      Result := 'Error: RC='+IntToStr(RC);
  end;
end;
Im Programm lass ich mir die MAC-Adresse mit

LabelBlaBla.Caption := GetMacAddr(IPAdresse); Wobei IPAdresse vom Typ String ist und eine IP-Adresse eines Remote-Hosts beinhaltet.
Selbst ein LabelBlaBla.Caption := GetMacAddr(AnsiString(IPAdresse)); brachte nicht den gewünschten Erfolg.
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:13 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