<div dir="ltr"><div>Pouzite nejake cca 3-4 stabilnejsie NTP servery, pripadne servery vacsich providerov napr.  <br></div><div><a href="http://ntp.nic.cz">ntp.nic.cz</a></div><div><a href="http://ntp.orange.cz">ntp.orange.cz</a></div><div>...</div><div>atd.</div><div><br></div><div>Ked niekolko krat neodpovie, alebo odpovie s chybami, tak treba zbehnut nove kolecko zisteni IP a rozhodovania, ktory server pouzijete na synchronizaciu.</div><div><br></div><div>Dodo<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">po 25. 7. 2022 o 18:08 Miroslav Mraz <<a href="mailto:mrazik@volny.cz">mrazik@volny.cz</a>> napísal(a):<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Tak jsem asi přišel na to kde je primární problém. Už tu bylo řečeno, že <br>
servery v poolu mají přiřazeno k jednomu doménovému jménu více IP adres. <br>
Potud je to v pořádku, je celkem jedno jakou IP si vyberu. Problém je v <br>
tom, že tento seznam IP adres se v čase dost často mění. Daná adresa asi <br>
zůstává ještě nějakou dobu aktivní, ale nakonec začne buď vracet chybné <br>
pakety, nebo neodpovídá vůbec.<br>
Takže po chybě je potřeba provést reconnect - nevím jak je to uděláno v <br>
té knihovně UDP, v unixu stačí zavřít soket a začít znovu s <br>
gethostbyname(). Klidně je možné použít stejné doménové jméno i pořadí v <br>
seznamu IP adres, stejně se dostanete na jinou IP. Kdyby člověk přečetl <br>
to RFC, tak by to asi věděl, ale jak se říká až selže vše, přečti si návod.<br>
<br>
Mrazík<br>
<br>
On 24. 07. 22 15:13, Miroslav Mraz wrote:<br>
> Tak jsem si s tím chvíli hrál, ono se to může někdy hodit. Kontrola <br>
> délky přijatého paketu je sice fajn, ale zdaleka nestačí.<br>
> <a href="https://labs.apnic.net/?p=462" rel="noreferrer" target="_blank">https://labs.apnic.net/?p=462</a><br>
> Je potřeba ještě (nejméně) kontrolovat hlavičku - v poli LI nesmí být <br>
> nastavena hodnota 3. Normálně se v bytu 0. vrací 0x24, při chybě 0xE4.<br>
> Dále hodnota Stratum nesmí být 0. Pokud přijde divný paket, má správnou <br>
> délku, ale data jsou zřejmě nulová, protože se mi nastaví datum na 7. <br>
> února 2036. Pokud si tam dopíšete ještě ty 2 kontroly hlavičky, pak už <br>
> by to mělo fungovat správně. A skutečně se počet sekund v paketu počítá <br>
> od roku 1900. To musel vymyslet blbec. Bacha ty vícebytové proměnné jsou <br>
> ve velkém indiánu (což je pro síťové aplikace obvyklé), v knihovně je to <br>
> celkem správně.<br>
> <br>
> if (((packetBuffer[0] >> 6) & 3) == 3) return false;<br>
> if   (packetBuffer[1] == 0)            return false;<br>
> <br>
> // zde by měla být data validní<br>
> <br>
> Mrazík<br>
> <br>
_______________________________________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" rel="noreferrer" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</blockquote></div>