die gethostbyname Funktion

Michael micha at electric-solutions.de
Son Dez 23 06:38:37 CET 2001


Hi Leute,

ich hab ein C++ Problem was mich was noch den Verstand kostet.
Mein Problem ist die gethostbyname Funktion.
Folgendes kleine Programm liefert die IP als long int:


#include <iostream.h>
#include <stdio.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>

unsigned long int
resolve (char *hostname)
{
  struct hostent *hp;
  unsigned long int ip;

  if (hostname == NULL)
    return INADDR_NONE;
  if (*hostname == 0)
    return INADDR_NONE;

  ip = inet_addr (hostname);
  if (ip != INADDR_NONE)
    return ip;

  if ((hp = gethostbyname (hostname)) == NULL)
    return INADDR_NONE;

  memcpy (&ip, hp->h_addr, hp->h_length);
  return ip;
}




int main() {
   
    unsigned long int     ipaddr;
    char         *host;
    extern int        h_errno;
   
   
   
    cout << "Host:";
    cin >> host;
    cout << endl;
    cout << "Resolve: " << host << endl;
   
    ipaddr = resolve(host);
   
       
    if(ipaddr == INADDR_NONE)
    herror ("Fehler: ");

    else
    cout << "IP: "<< ipaddr << endl;

    return 0;
   
}
So funktioniert das Prog ohne Probleme...
Ich geb eine Webadresse ein und ich bekomme eine IP...
Nun hab ich die resolve- funktion meines Progs als private Methode in 
ein anders Prog aufgenommen...
Jetzt bekomm ich nur noch Unknown Host geliefert, egal was ich da für 
eine Adresse übergebe, selbst wenn es eine Adresse ist, die mit obrigen 
Programm
aufgelöst wurde...
Was mich ausserdem wundert ist, wenn ich statt einem Zeiger auf einen 
String eine Adresse direkt eingebe also statt if ((hp = gethostbyname 
(hostname)) == NULL),
if ((hp = gethostbyname ("www.web.de")) == NULL) benutze, dann 
funktionierts wieder...
Kann mir jemand erklären was ich falsch mache, und warum das in dem 
einem Programm funkioniert und in dem andern nicht, obwohl der Quellcode 
absolut identisch ist?


So das wars erst mal. Sorry das die Mail ein wenig lang geworden ist...
Bis bald

Ciao Micha




-- 
tlug Mailingliste
Archiv: http://www.tlug.de/archiv/
http://schwarz.thueday.de/mailman/listinfo/tlug_allgemein