IP-Adresse und Hostname



  • Hallo ihr!

    Ich habe ein Problem. Ich soll ein Programm mit C++ schreiben, das die IP-Adresse und den Hostname des Arbeitsplatzrechners ausgibt. Und NUR diese beiden Sachen. Mit den Systembefehlen ipconfig und hostname werden noch andere Informationen ausgegeben, die nicht ausgegeben werden sollen. Wie funktioniert das??

    Ich hoffe ihr könnt mir helfen!

    LG



  • Du könntest beispielsweise einfach
    (bitte verzeiht, ihr Götter, dass ich wieder diesen sooo veralteten Vorschlag mache - aber never change a running system!!)
    die Ausgabe in eine Datei umleiten
    system("hostname >c:/tmp/hostname.txt");
    und diese dann einlesen. Anschließend suchst Du dir die IP raus und schmeißt den Rest weg.

    Wie gesagt, ist wahrscheinlich nicht der schnellste Weg, aber es ist einfach und funktioniert - auch wenn mich der nächste "Vollprofi" schon wegen des Gedanken an diesen Weg als Anfänger und Nichtskönner tituliert. Naja, mir soll's egal sein.

    bis denn, kleene
    DjR



  • Aha. Hört sich ja schonmal ganz gut an.

    Aber wie bekomm ich denn nur die IP und den Namen daraus????

    (Sorry für die doofen Fragen, aber ich hab noch nicht viel Ahnung von C++.) 😞



  • Du könntest die Ausgabe auch in ein Array umleiten, dann sparst du dir das Festplattengerödel, ist aber im Prinzip dasselbe 😛

    Jedenfalls gib mal ipconfig ein und du wirst feststellen das sie immer nach dem gleichen Muster aufgebaut ist, einer ip Adresse kommt zb immer "IP-Adresse . . . . . :" oder ähnlich voraus. jetzt bisschen rumwursteln und die richtige Stelle finden.

    Ach und mit welchem Compiler programmierst du ?_? vieleicht hättich da auchnoch was besseres Compilerspezifisches

    edit:
    oh und was mit WINAPI habich auchnoch aufer Festplatte:

    int getmyips(TStrings* pslStrings)
    {
      if(pslStrings) pslStrings -> Clear();
      WSAData stData;
      char caHostName[255];
      hostent* pstHostEntry = NULL;
      in_addr stInetAddress;
      int ilRetVal = 0;
    
      // Winsock initialisieren:
      if(WSAStartup(0x0101, &stData) == 0)
      {
        // Hostnamen bestimmen:
        if(gethostname(caHostName, 255)) return 0;
        // Hostinformationen abrufen:
        pstHostEntry = gethostbyname(caHostName);
        if(pstHostEntry == NULL) return 0;
    
        // IP-Adressen bestimmen:
        for(int ilAddrIndex=0; pstHostEntry->h_addr_list[ilAddrIndex]; ilAddrIndex++)
        {
          stInetAddress.S_un.S_addr =
            *((DWORD*)pstHostEntry->h_addr_list[ilAddrIndex]);
          if(pslStrings != NULL)
            pslStrings -> Add(inet_ntoa(stInetAddress));
          ilRetVal++;
        }
      }
      else return 0;
      WSACleanup();
      return ilRetVal;
    }
    

    wenn du keinen Borland hast nimm statt der TStrings ein std::string array und füll die darein.
    Die Funktion die dir den Hotnamen ausspuckt zu finden sollte auchnicht mehr so schwer sein.

    [ Dieser Beitrag wurde am 12.02.2003 um 11:40 Uhr von dreaddy editiert. ]



  • Ich arbeite mit MS Visual Studio.

    Werd das andere mal testen. Aber danke schonmal!



  • ip wird von Standard C++ nicht behndelt.
    Thread verschoben ins WinApi Forum. WinAPI



  • In der FAQ steht wie du am deine IP kommst.


Anmelden zum Antworten