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