DigiWEB
C-Schnittstelle
16 DNS – Domain Namen auflösen
Die Einfache Methode:
tIP ip = DnsGetIp("web.de");
if(ip.is==0)
return; //name konnte nicht aufgelöst werden
Da diese Funktion blockt ist sie für DigiWEB Anwendungen nicht zu empfehlen. Sie würde das
gesamte DigiWEB für die Zeit in der die Anfrage läuft anhalten.
Die Methode mit einer Statemachine:
void (*pDnsProg)(void);
void *pvDns=0;
void waitDns(void)
{
tIP IP;
if((IP=DnsChk(pvDns)).is==0xFFFFffff)
{
return;
}
if(IP.is==0)
return; //name konnte nicht aufgelöst werden
//name wurde aufgelöst. //IP-Adresse steht nun in IP
pvDns=0;
pDnsProg=0;
}
void startDns(void)
{
pvDns=DnsStart("web.de");
pDnsProg=waitDns;
}
void DigiWebOptionThread(void)
{
if(!pDnsProg)
pDnsProg=startDns;
(*pDnsProg)();
}
DigiWebOptionThread wird zyklisch aufgerufen.
Im ersten Schritt wird mit "void* pvDns=DnsStart("web.de");" die DNS Anfrage gestartet. Und
Anschließend Schritt 2 eingeleitet.
Seite 42 von 44
Automationsanlagen GmbH
Digitronic
3. Juni 2011