Portál AbcLinuxu, 24. dubna 2024 16:29


Dotaz: nefunkční gethostbyname()

5.11.2005 11:03 Martin Tůma | skóre: 39 | blog: RTFM | Praha
nefunkční gethostbyname()
Přečteno: 594×
Odpovědět | Admin

Snažim se napsat kód, kterej ze vstupního parametru kterým může být ip adresa nebo hostname vytvoří strukturu in_addr. Pokud se zadá existující ip nebo jméno, tak vše funguje jak má. Pokuď se ale zadá nějakej nesmyslnej řetězec, nedostane se kód do větve s výpisem chyby, ale "zastaví" se. Netušíte někdo, kde je chyba?

struct in_addr ip;

    /* Ziskani ip adresy serveru */

if (inet_aton(argv[1], &ip) == 0) {
    if((ph = gethostbyname(argv[1])) != NULL)
        memcpy(&ip.s_addr, ph->h_addr, sizeof(ip.s_addr));
    else
        printf("%s: unknown host %s", basename(argv[0]), basename(argv[1]));
}
Každý má právo na můj názor!
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.11.2005 11:36 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: nefunkční gethostbyname()
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nezastaví se, čeká na timeout.
5.11.2005 11:49 Martin Tůma | skóre: 39 | blog: RTFM | Praha
Rozbalit Rozbalit vše Re: nefunkční gethostbyname()

To jo, ale to už čeká následující kód, který se stará o samotné TCP spojení. Mám tomu teda rozumět tak, že pokud není ip adresa pro dané jméno nalezena, není to chyba a gethostbyname() nevrací NULL?

Pokud ano, existuje nějaká jednoduchá metoda, jak zjistit zda dané jméno skutečně existuje v rozumném čase (například jako u www prohlížečů)? Nebo se to řeší nějakým signálem po určené době?

Každý má právo na můj názor!
5.11.2005 13:48 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: nefunkční gethostbyname()
Mám tomu teda rozumět tak, že pokud není ip adresa pro dané jméno nalezena, není to chyba a gethostbyname() nevrací NULL?

Chybu vrací tak, jak je specifikováno (nepamatuji si z hlavy, jak to přesně je). Jen to není hned, ale až ve chvíli, kdy to resolver vzdá (obvykle po několika sekundách). Nezkoumal jsem, jestli ten timeout lze nějak ovlivnit.

5.11.2005 12:05 Martin Tůma | skóre: 39 | blog: RTFM | Praha
Rozbalit Rozbalit vše Re: nefunkční gethostbyname()
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tak zpět... Problém je ten, že mi v tom printf() chybí '\n' a chybová hláška se mi nevypsala na obrazovku...

Každý má právo na můj názor!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.