AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi MAC-Adresse im LAN anhand der IP / des Namens erhalten
Thema durchsuchen
Ansicht
Themen-Optionen

MAC-Adresse im LAN anhand der IP / des Namens erhalten

Ein Thema von ManuMF · begonnen am 1. Mär 2006 · letzter Beitrag vom 21. Mär 2006
Antwort Antwort
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#1

MAC-Adresse im LAN anhand der IP / des Namens erhalten

  Alt 1. Mär 2006, 20:35
Hallo,

ich schreibe mir gearde ein WakeOnLAN-Tool. Es soll auch die MAC-Adresse anhand einer IP oder eines Rechnernamens ermitteln können. Ich habe hier im Forum gesucht, und als "passendstes" Thema dieses gefunden. Dort sind 2 Lösungen beschrieben: Über arp und NetBIOS. Letzteres funktioniert, aber nur bei meinem PC, nicht bei anderen, z.B. unserem Netzwerkdrucker. Wenn ich ihn anpinge, wird die Adresse bei "arp -a" angezeigt.

Wie kann ich nun auch bei anderen Geräten mit Delphi die Adresse herausfinden? Mit der Lösung über arp im o.g. Thema komme ich leider nicht klar

Danke,
ManuMF

[edit]Neue Erkenntnisse: liegt nicht nur am Netzwerkdrucker[/edit]
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten

  Alt 1. Mär 2006, 21:29
habe da etwas im Netz gefunden was Dir helfen könnte.

Delphi-Quellcode:
procedure TMain.btnArpClick(Sender: TObject);
var
  DestIP, SrcIP: IPAddr;
  pMacAddr: PULong;
  AddrLen: ULong;
  MacAddr: array[0..5] of byte;
  p: PByte;
  s: string;
  i: integer;
begin
  SrcIp := 0;
  s := '';
  InputQuery('Find Mac Address by Arp Request','Input Destination IPAddress',s);
  DestIP := inet_addr(PChar(s));
  pMacAddr := @MacAddr[0];
  AddrLen := SizeOf(MacAddr);
  SendARP(DestIP, SrcIP, pMacAddr, AddrLen);
  s := ' MacAddress : ';
  p := PByte(pMacAddr);
  if Assigned(p) and (AddrLen>0) then
    for i := 0 to AddrLen-1 do
    begin
      s := s + IntToHex(p^,2) + '-';
      Inc(p);
    end;
  SetLength(s, length(s)-1);
  sbMain.Panels[2].Text:=s;
end;
wobei SendArp eine Funktion aus iphlpapi.dll ist:

function SendARP; external 'iphlpapi.dll' name 'SendARP';

Die dll habe ich angefügt.

Grüße
Klaus
Angehängte Dateien
Dateityp: zip iphlpapi_161.zip (81,9 KB, 249x aufgerufen)
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#3

Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten

  Alt 2. Mär 2006, 17:08
Hallo,

danke erst mal. Nachdem ich SendArp als Procedure deklariert habe (sonst hätte ich einen Rückgabetyp gebraucht), hängt der Compiler nun an
Delphi-Quellcode:
var
  DestIP, SrcIP: IPAddr;
"inet_addr" kennt er ebenfalls nicht. Wo sind die Deklarationen zu finden?

Danke,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#4

Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten

  Alt 2. Mär 2006, 18:20
OK, ich habe es jetzt gelöst.
Die Funktion "inet_addr" kommt aus Winsock. Den Rest ("IPAddr" bzw. die SendARP Funktion) nehme ich jetzt aus den Units aus dem o.g. Thema.

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
felix_schmidt

Registriert seit: 9. Feb 2006
24 Beiträge
 
#5

Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten

  Alt 17. Mär 2006, 13:53
kannst du mir sagen wie du das gelöst hast???
ich steig da gerade gar net durch!!!
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#6

Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten

  Alt 17. Mär 2006, 15:56
Diese Funkton wandelt mir eine IP in eine MAC-Adresse um:

Delphi-Quellcode:
uses IPHlpAPI, WinSock;


function IPToMAC(IP: String) : String;
var
  DestIP, SrcIP: Cardinal;
  pMacAddr: PULong;
  AddrLen: ULong;
  MacAddr: array[0..5] of byte;
  p: PByte;
  i: integer;
begin
  result := '';
  SrcIp := 0;
  DestIP := inet_addr(PChar(IP));
  pMacAddr := @MacAddr[0];
  AddrLen := SizeOf(MacAddr);
  SendARP(DestIP, SrcIP, pMacAddr, AddrLen);
  p := PByte(pMacAddr);
  if Assigned(p) and (AddrLen>0) then
  for i := 0 to AddrLen-1 do
  begin
    result := result + IntToHex(p^,2) + '-';
    Inc(p);
  end;
  SetLength(result, Length(result) - 1);
end;
Die Unit IPHlpAPI.pas findest du angehängt im Beitrag, auf den ich oben verwiesen habe.

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
felix_schmidt

Registriert seit: 9. Feb 2006
24 Beiträge
 
#7

Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten

  Alt 21. Mär 2006, 14:53
der compiler findet bei mir die IPHlpAPI nicht
was soll ich tun bin absoluter neuling

danke
  Mit Zitat antworten Zitat
felix_schmidt

Registriert seit: 9. Feb 2006
24 Beiträge
 
#8

Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten

  Alt 21. Mär 2006, 15:05
sorry habs doch geschaft
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz