Goede middag mede tweakers,
ik ben momenteel bezig met het schrijven van een NTP applicatie, en ik wil de bestaande verschillende formaten en protocollen ondersteunen. Nu ben ik via deze site achter de 4 verschillende protocollen gekomen, en de definitie van deze protocollen. Momenteel heb ik in VB.Net mijn applicatie in zoverre werkend gekregen dat ik via TCP RFC-867 en RFC-868 (Daytime (poort 13) en Time (poort 37)) kan ondersteunen. Echter zijn er ook tientallen timeservers op internet beschikbaar die alleen gebruik maken van het NTP of SNTP formaat, welke ik dus ook wil kunnen benaderen. Als je nl. gebruik maakt van een NTP pool weet je namelijk van tevoren nooit welk protocol die server gebruikt en hoe jij dus antwoord krijgt. Als gevolg hiervan wil ik dus ook de UDP protocollen (RFC-1305 en RFC-2030) ondersteunen. Echter krijg ik deze totaal niet werkend. Hieronder plaats ik een stuk van "mijn" UDP code, ik heb deze gebaseerd op de code van Peter Slade:
Maar hij wil totaal niets receiven. Ja, ik weet dat udpSocket.Receive een blocking call is en dat het beter is om het asynchroon op te lossen. Maar dan moet ik eerst het zo werkend krijgen, het daarna omschrijven naar asynchroon is de volgende stap. Maar wie kan me helpen met het werkend krijgen van eht UDP protocol? Overigens als ik address.AddressList(0) bekijk, dan heeft dit de waarde 470746753 terwijl ik de host time-a.nist.gov raadpleeg, welke het volgende IP adress heeft 129.6.15.28. Wie o wie kan me hierbij helpen?
ik ben momenteel bezig met het schrijven van een NTP applicatie, en ik wil de bestaande verschillende formaten en protocollen ondersteunen. Nu ben ik via deze site achter de 4 verschillende protocollen gekomen, en de definitie van deze protocollen. Momenteel heb ik in VB.Net mijn applicatie in zoverre werkend gekregen dat ik via TCP RFC-867 en RFC-868 (Daytime (poort 13) en Time (poort 37)) kan ondersteunen. Echter zijn er ook tientallen timeservers op internet beschikbaar die alleen gebruik maken van het NTP of SNTP formaat, welke ik dus ook wil kunnen benaderen. Als je nl. gebruik maakt van een NTP pool weet je namelijk van tevoren nooit welk protocol die server gebruikt en hoe jij dus antwoord krijgt. Als gevolg hiervan wil ik dus ook de UDP protocollen (RFC-1305 en RFC-2030) ondersteunen. Echter krijg ik deze totaal niet werkend. Hieronder plaats ik een stuk van "mijn" UDP code, ik heb deze gebaseerd op de code van Peter Slade:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Const offsetTransmitTime As Byte = 40
Dim udpSocket As UdpClient = Nothing
Try
Dim address As IPHostEntry = Dns.GetHostEntry(Me.server)
Dim endPoint As New IPEndPoint(address.AddressList(0), Me.poort)
udpSocket = New UdpClient()
udpSocket.Connect(endPoint)
ntpData(0) = &H1B 'Zet de modus op cliënt
Dim i As Integer
For i = 1 To 47 ' pad with 0's
ntpData(i) = 0
Next i
udpSocket.Send(ntpData, ntpData.Length)
ntpData = udpSocket.Receive(endPoint)
receiveTime = Date.Now
Dim intpart As ULong = 0
For i = 0 To 3
intpart = 256 * intpart + ntpData((offsetTransmitTime + i))
Next i |
Maar hij wil totaal niets receiven. Ja, ik weet dat udpSocket.Receive een blocking call is en dat het beter is om het asynchroon op te lossen. Maar dan moet ik eerst het zo werkend krijgen, het daarna omschrijven naar asynchroon is de volgende stap. Maar wie kan me helpen met het werkend krijgen van eht UDP protocol? Overigens als ik address.AddressList(0) bekijk, dan heeft dit de waarde 470746753 terwijl ik de host time-a.nist.gov raadpleeg, welke het volgende IP adress heeft 129.6.15.28. Wie o wie kan me hierbij helpen?
Wanna play?