Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Hostname 2 IP ?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.01.2009, 17:29 Uhr
~iphostname
Gast


Grüß Gott!


Dieser Code hier:

Code:
int s;
    struct sockaddr_in srv;
    const char* const host = ip.c_str() ;
    const hostent* host_info;
    const in_addr* address;

    try
    {    
        host_info = gethostbyname(host) ;
        address = (in_addr*)host_info->h_addr_list[0];
    }
    catch  (...)
    {
        cout <<  "here" << endl;
    }
..........
.........
.......



Wirft mir einen Seg fault, sobald die Variable ip, einen Hostnamen enthält, welcher nicht existiert.
Wenn z.b. ip = blabliblo.google.de ist, gibts n seg fault.

Sollte doch eigentlich durch den try / catch abgefangen werden?
Wie müsste ichdas umschreiben?


Danke mal
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.01.2009, 18:42 Uhr
0xdeadbeef
Gott
(Operator)


gethostbyname gibt NULL zurück, wenn der Host nicht gefunden werden kann, dementsprechend erzeugt

C++:
address = (in_addr*)host_info->h_addr_list[0];


einen segfault. Das ist keine C++-Exception, und dementsprechend auch nicht mit try/catch abfangbar.

Gelöst kriegst du das ganze etwa so:

C++:
if(host_info) {
  address = (in_addr*)host_info->h_addr_list[0];
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: