IP bestimmen und anzeigen



  • Moin,

    ich weiß, dass zu diesem Thema schon sehr viele Berichte geschrieben wurden, aber bisher habe ich (auch mit Suche) nicht gefunden, was ich wollte.

    Ich habe von c-worker.ch das tut befolgt. Da gibt es eine Funktion:

    long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr)
    {
      long rc;
      unsigned long ip;
      HOSTENT* he;
    
      /* Parameter prüfen */
      if(hostnameOrIp==NULL || addr==NULL)
        return SOCKET_ERROR;
    
      /* eine IP in hostnameOrIp ? */
      ip=inet_addr(hostnameOrIp);
    
      /* bei einem fehler liefert inet_addr den Rückgabewert INADDR_NONE */
      if(ip!=INADDR_NONE)
      {
        addr->sin_addr.s_addr=ip;
    
        return 0;
      }
      else
      {
        /* Hostname in hostnameOrIp auflösen */
        he=gethostbyname(hostnameOrIp);
    
        if(he==NULL)
        {
          return SOCKET_ERROR;
        }
        else
        {
          /*die 4 Bytes der IP von he nach addr kopieren */
          memcpy(&(addr->sin_addr),he->h_addr_list[0],4);
        }
    
        return 0;
      }
    }
    

    Die Parameter, die Übergeben werden sind argv[1] und ein SOCKADDR_IN namens addr.

    Wie kann ich jetzt die bestimmte IP (die bei argv[1] angegeben ist) ausgeben?

    Ich hoffe auf Hilfe,

    Euer ItsNotYou

    P.S.: Bitte mit Codebeispielen



  • Wenn du die IP schon in einen char-Array hast, wo ist dann dein Problem bei der Ausgabe 😕 Oder suchst du inet_ntoa 🙄



  • wenn ich schreibe

    printf("%s\n", he->h_addr_list);
    

    oder

    printf("%d.%d.%d.%d\n", he->h_addr_list[0], he->h_addr_list[1], he->h_addr_list[2], he->h_addr_list[3]);
    

    kommt nur Mist raus (bei localhost in argv[1]).

    Ich verstehe nicht warum.

    Und da liegt mein Problem...



  • MessageBox(NULL,inet_ntoa(addr.sin_addr),"",0);
    

    ;


Anmelden zum Antworten