Téma: DNS resolver - problémy
Zdravím,
zakomponoval jsem do svého programu posílání dat na (svůj) HTTP server, takže jsem se dostal i k problému s funkcí dns_resolv(). Zkoušel jsem to důkladně testovat, ale připadá mi, že hodnotu bez timeoutu vrátí jen v pžípadě, že už má SDS hodnotu IP ve své paměti a neoslovuje znova DNS server. Tady je kousek kódu:
vrat_datumCas {
den1 = DEN / 10;
den2 = DEN % 10;
mes1 = MES / 10;
mes2 = MES % 10;
rok1 = ROK;
rok4 = rok1 % 10;
rok1 /= 10;
rok3 = rok1 % 10;
rok1 /= 10;
rok2 = rok1 % 10;
rok1 /= 10;
hod1 = HOD / 10;
hod2 = HOD % 10;
min1 = MIN / 10;
min2 = MIN % 10;
sec1 = SEC / 10;
sec2 = SEC % 10;
}
dns {
vrat_datumCas();
echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: zavolan dns_resolv(www.i-dum.info), SYS[65]=', sys[65]);
dns_resolv('www.i-dum.info'); //adresa HTTP serveru, kam chceme posílat data
//počkáme 10s na převod
sys[64] = 10;
vrat_datumCas();
echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: Cekam na SYS[65]!=0');
cekam_na_dns:
if (sys[65]==0 && sys[64]>0) goto cekam_na_dns;
vrat_datumCas();
echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: Cekam na odpoved od ', sys[70], '.', sys[71], '.', sys[72], '.', sys[73]);
cekam_na_dns_odpoved:
if (sys[65]==514 && sys[64]>0) {
goto cekam_na_dns_odpoved;
}
if (sys[65]==513) {
vrat_datumCas();
echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: chyba');
goto preskocit;
}
if (sys[65]==514) {
vrat_datumCas();
echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: timeout');
goto preskocit;
}
//převod OK...
IP1 = sys[66]; //tady bude IP adresa
IP2 = sys[67];
IP3 = sys[68];
IP4 = sys[69];
vrat_datumCas();
echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: RESOLV ', IP1, '.', IP2, '.', IP3, '.', IP4);
label preskocit:
}Výsledek je pak zhruba takovýto (časy záleží na timeout):23:50:06 SDS: program spusten...
23:50:06 DNS: zavolan dns_resolv(www.i-dum.info), SYS[65]=65535
23:50:06 DNS: Cekam na SYS[65]!=0
23:50:06 DNS: Cekam na odpoved od 10.0.13.1
23:50:16 DNS: timeout
23:50:30 HTTP: www.i-dum.info/_______?...
23:50:30 SYS[65]=514, SYS[75]=0
23:51:00 HTTP: www.i-dum.info/_______?...
23:51:00 SYS[65]=1024, SYS[75]=200V ukázce je i výsledek dalších funkcí, ale ten pro DNS není důležitý (data to na server posílá, protože jsem tu IP adresu dal přímo do http_get()). Pokud tam chci od DNS třeba adresu Google, ten dns_resolver mi hodnotu vrátí... Tak nevím, poradíte?