[VB.Net] NTP via TCP lukt wel, via UDP niet?

Pagina: 1
Acties:

  • F-Tim
  • Registratie: November 2003
  • Laatst online: 23-02 12:35
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:
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?


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
F-Tim schreef op maandag 03 april 2006 @ 13:20:
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 heb geen fluit verstand van VB.Net, echter 470746753 lijkt me geen probleem:
code:
1
2
% ./ip 470746753
28.15.6.129
lijkt me behoorlijk overeenkomen met jouw gewenste host, maar dan in een andere order, dus daar hoeft alvast geen probleem te liggen.

[ Voor 8% gewijzigd door blaataaps op 03-04-2006 13:28 ]