Announcement

Collapse
No announcement yet.

MAC Aadresse eines remote Rechners in C++

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MAC Aadresse eines remote Rechners in C++

    Hi,

    ich bräuchte einen Weg in einer Linux-basierten Umgebung die MAC-Addresse eines Rechners zu erfragen, von dem ich nur die IP-Addresse weiß. Der Rechner ist direkt verbunden, es gibt also keinen Router zwischendrin. Was ich ergoogelt habe führt alles auf ein ping mit anschließendem arp hin. Die Ausgabe des arp müsste ich dann in eine Datei umleiten, damit ich sie in C++ wieder auslesen und parsen kann, da system ja nur zurückgibt, ob es geklappt hat oder nicht.

    Also in etwa so etwas:
    [highlight=cpp]
    std::string GetMacAddressFromIP(std::string ipAddress)
    {
    std::string command = "ping -c1 " + ipAddress + "; arp " + ipAddress + ">/tmp/tmpfile";
    std::string buffer;
    system(command.c_str());
    std::ifstream readstream;
    readstream.open("/tmp/tmpfile");
    getline(readstream,buffer);
    readstream.close();
    int strpos=buffer.find(':');
    std::string macAddress = buffer.substr(strpos-2,17);
    return macAddress;
    }
    [/highlight]

    Geht das nicht einfacher, d.h. gibt es da nicht irgendwelche C++-Operationen, die ohne einen Systemaufruf auskommen? So kann das nämlich schon etwas dauern (ich glaueb das Ping wird da am schwersten reinschagen, und bei den vielen Initialisierungen am Programstart, möchte ich nicht noch durch unnötige shell-Kommandos Zeit verlieren.

    Wenns es anders nur mit "frei verfügbaren Bibliotheken" möglich ist, muss ich leider ablehnen, das ganze läuft nachher auf einer embedded Platfom, und da habe ich hier schon einen Thread am Laufen, der sich mit Fehlern beim CrossCompiling beschäftigt

    Gruß
    Martin
Working...
X