NTP Zeitabgleich Kategorie: Programmierung Basic (von Wolle - 7.03.2015 14:23) | ||
| ||
Hallo, ich versuche mittels NTP einen Zeitabgleich zu realisieren. Leider kann ich hier den Quell-Port nicht setzen (bei NTP ist ja Ziel und Quelle gleich). Absetzen der Anforderung geht, kommt aber kein Paket zurück. Wenn ich mittels Wireshark schau, dann sehe ich die Fehlermeldung "Port unreachable". Klar, er versucht auf dem Port 49152 zu erreichen, ist aber nicht geöffnet. Wenn ich dies im Programm mache, den kommt eben die Fehlermeldung "Port 49153 unreachable". Hat jemand schon erfolgreich soetwas realisiert? So habe ich es gemacht: '****************************************************************************** 'Variable für Ethernet - NTP Dim buf_ntp(ETH_BUF(48,0)) = {_ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,_ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,_ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,_ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,_ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,_ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 } As Byte Dim xy As Word Sub main() Dim buf(ETH_BUF(500, 0)) As Byte Dim rbuf(200) As Byte Dim txt1(10) As Char Dim info(4),plen As Word Dim ip As ULong ETH_SetConnBuf(buf, 500, 0) ' NTP aufrufen buf_ntp(0) = 0x1b 'Kennung Version 3 + NTP-Client => LI + VN + Mode 'LI = 00: keine Warnung 'VN = 011: Version-Nr. 3 'Mode = 011: Client Do While True 'Endless loop ETH_SendUDP(IP_ADDR(192,168,1,1), 123, buf_ntp, 48) '=> fritz.box AbsDelay(500) xz = ETH_ListenUDP(123) ip = ETH_CheckReceiveBuf(info) Msg_WriteFloat(ip) Msg_WriteChar(13) If ip Then plen=info(3) If plen > 48 Then plen = 48 End If ETH_ReceiveData(rbuf, plen) For i = 0 To plen - 1 Msg_WriteChar(rbuf(i)) Next Msg_WriteChar(13) End If ETH_CloseListenUDP(123) End While End Sub | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum