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