( khiraly | 2018. 07. 06., p – 17:56 )

Ha tobben vannak, akkor azert ki lehet szurni a random delay-t, ami altalaban nem is annyira random:)

Van 3 csomopontunk: Ászok, Borsodi, Corona

Aszok legyen a fonok o inditja az akciot.
Az egyszeruseg kedveert amikor az Aszok inditja az akciot, akkor a belso oraik:
Aszok = 0sec
Borsodi = 10sec
Corona = 20 sec

Aszok kuld egy idokerest Borsodinak és a valaszt elmenti: Igy az Aszok <-> Borsodi valaszido ismert (Á->B + B->Á)

Amikor Borsodi megkapja a kerest, o is kuld egy kerest Coronanak, igy
Borsodi<->Corona valaszideje is ismert

Amikor Corona megkapja a kerest, akkor elkuldi Aszoknak. Ekkor Aszok rogton visszakuldi, es a kort masik iranybol is bejarjuk (A->C, C->B, C<-B, B->A)

Mindegyik keresbe beleirjak a sajat orajuk allapotat.

Amikor Aszok megkapta mind a ket iranybol a valaszokat, akkor el tudja kuldeni Borsodinak es Coronanak is, hogy mennyit huzzanak az orajukon.

Ebbol ki lehet matekozni, szerintem 100ms-on belul ossze lehet ezt loni.

Update:
Megneztem az NTP protokollt. Hat ez ennel sokkal egyszerubb. Kikialtanak a cuccok egy fonokot (ntp server), es mindenki ohozza allitja az orajat.
A fenti példánál maradva Ászoknál az idő legyen 17:47:02.

Mindenki beállítja 17:47:02-re. Nyilvánvalóan sz*r lesz:
Ászok: 17:47:10
Borsodi: 17:47:12
Corona: 17:47:13

Mostmár, hogy majdnem jó az órájuk, így finoman össze lehet hangolni:
Borsodi(17:47:30-kor) küld egy kérést, megkapja 17:47:31-kor(B), 17:47:29-as(A) értékkel.
Akkor az ő órája: 17:47:29 + roundtrip idő/2, ami 17:47:29 + 0.5 = 17:47:29.5

És ezt ismétli párszor, a hibát mindig beleszámolja (feedback loop).

A lebutitott protokoll meg kb. igy nezne ki:
Ászok küld egy broadcast üzenetet, hogy ennyi az idő.
Majd mindegyik a fenti eljárással finomhangolná a saját óráját.

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....