FULL-C dns resolv functions
Tato stránka popisuje programovací jazyk FULL-C, který je dostupný na vybraných zařízeních SDS. Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.
Síťové funkce: dotaz na přidělenou IP adresu pro DNS jméno
Zařízení SDS umožňuje odeslat dotaz na DNS server, za účelem zjištění IP adresy přidělené k DNS názvu, který je obsahem právě takového dotazu.
Za tímto účelem jsou k dispozici tyto dvě funkce:
void dns_resolv(char *domainNameInput); unsigned int dns_resolv_status(unsigned int *IP0value, unsigned int *IP1value, unsigned int *IP2value, unsigned int *IP3value);
Princip
SDS odesílá dotaz na DNS server, který je nastaven uživatelem SDS ve webové administraci zařízení (popř. je adresa DNS serveru získána z DHCP serveru, opět záleží na konfiguraci).
Po odeslání dotazu se čeká na odpověď, přičemž FULL-C program pravidelně kontroluje stav voláním dns_resolv_status() funkce.
Příklad
V tomto příkladu odesílá SDS dotaz (textový název domény) na DNS server a zobrazuje případnou získanou odpověď (IP adresu).
void main(void) { char DNSname[64]; unsigned int status; unsigned int IP0, IP1, IP2, IP3; sprintf((char *)DNSname, "www.google.com"); printf("RESOLVING %s \n", DNSname); dns_resolv(DNSname); status = dns_resolv_status(&IP0, &IP1, &IP2, &IP3); while (status == 512) { status = dns_resolv_status(&IP0, &IP1, &IP2, &IP3); } if (status == 513) { printf("GOT RESULT: IP = %u.%u.%u.%u\n", IP0, IP1, IP2, IP3); } else { printf("DNS RESOLV FAILED (error %u) \n", status); } }
Stavové hodnoty
Program musí použít volání funkce dns_resolv_status pro zjištění okamžitého stavu.
dns_resolv_status() význam -------------------------+----------------------------------------------------------------------- 0 | klid, můžete odeslat DNS dotaz 512 | pracuje, dotaz odeslán, čekejte 513 | hotovo OK, do *resolvedIPaddressOutput byla zapsána IP adresa (4 bajty) 514 | odpověď nebyla získána (chyba) 515 | funkce byla zavolána s neplatnými parametry - nic nebylo provedeno