


Public Sub TCPIP_Socket_Read()
' *****************************************************
' When some data arrives from the remote
' part of the socket, "DataAvailable" event is raised
' *****************************************************
  Dim s, zd, szz, sDatum As String
  Dim wert, i, a, b, c, d As Integer
  Dim iNTPSekunden, mys, mys2 As Long
  Dim iCurrentSekunden As Integer
  Dim iSekunden19001700, zz2 As Long
  Dim dDate1970, dCurrentDateGMT As Date
  
  
  ' Die Zeitstempel im NTP sind 64 Bits lang. 32 Bits kodieren die iNTPSekunden seit dem 1. Januar 1900 00:00:00 Uhr
  
  mys = DateDiff("01/01/1900", "01/01/1935", gb.Second) 
  mys2 = DateDiff("01/01/1935", "01/01/1970 ", gb.Second)
  
  ' Print mys
  ' Print mys2
  
  iCurrentSekunden = 0
  iNTPSekunden = 0
  zd = "2208988800" ' Anzahl der iNTPSekunden zwischen 1900-01-01 und 1970-01-01 = 2208988800.
  iSekunden19001700 = CLong(zd)
  ' Print zd
  
  If TCPIP_Socket.Status = Net.Connected Then
     txaErgebnisse.Text &= "Anzahl Daten-Bytes = " & Lof(TCPIP_Socket) & Chr(10)
     Read #TCPIP_Socket, s, Lof(TCPIP_Socket)

   ' Umwandlung des übermittelten 32-Bit-Datenwortes in eine ganze Zahl
     For i = 1 To Len(s)
        ' txaErgebnisse.Text &= "Byte_" & CStr(i) & " = " & Mid$(s, i, 1) & " | " & Asc(Mid$(s, i, 1)) & Chr(10)
         txaErgebnisse.Text &= "Byte_" & CStr(i) & " = " & String.Chr(Asc(Mid$(s, i, 1))) & " | " & Asc(Mid$(s, i, 1)) & Chr(10)
         iNTPSekunden = iNTPSekunden * 256 + Asc(Mid$(s, i, 1))
     Next ' i-Zähler
  Endif ' TCPIP_Socket.Status = Net.Connected?
 
 ' Anzahl der iNTPSekunden = 207 * 256 ³ + 64*256² + 198*256 + 155
 
 
  txaErgebnisse.Text &= "Zeit-Differenz 1: " & Str(iNTPSekunden) & " Sekunden" & Chr(10)
  iCurrentSekunden = iNTPSekunden - iSekunden19001700
  Print iCurrentSekunden
 
' Zur Kontrolle: IF IsLong(iSekunden19001700) THEN PRINT "iCurrentSekunden ist LONG!"

  txaErgebnisse.Text &= "Zeit-Differenz 2: " & iCurrentSekunden & " Sekunden" & Chr(10) & Chr(10)
  
  dDate1970 = Date(1970, 01, 01, 0, 0, 0)
' dCurrentDateGMT = DateAdd(dDate1970, gb.Second, iCurrentSekunden + 3600)
 
  dCurrentDateGMT = DateAdd(dDate1970, gb.Second, iCurrentSekunden + 3600)
  
  
  txaErgebnisse.Text &= "Datum und (Server-)Zeit: " & dCurrentDateGMT & Chr(10)
  txaErgebnisse.Text &= "Datum: " & Date(CFloat(dCurrentDateGMT)) & Chr(10)
  txaErgebnisse.Text &= "Heute ist " & Format$(dCurrentDateGMT, "dddd dd. mmmm yyyy") & Chr(10)
  'txaErgebnisse.Text &= "Heute ist " & Format$(dCurrentDateGMT, "dddd") & ", der " & Format$(dCurrentDateGMT, "dd. mmmm yyyy") & Chr(10)
  sDatum = "Heute ist " & Format$(dCurrentDateGMT, "dddd") & ", der " & Format$(dCurrentDateGMT, "d. mmmm yyyy") & Chr(10)
  txaErgebnisse.Text &= sDatum
' TextArea1.text = CStr(iCurrentSekunden)
' PRINT "E =" & CStr(34000000000 - 22000000001)
' SHELL "date -d @" & (iCurrentSekunden)
' SHELL "date -d @" & iCurrentSekunden & " +%A,%d.%m.%Y-%H:%M"
' SHELL "date -d @" & iCurrentSekunden & " > /home/hans/a.txt"
    
' Auslesen der RTC (RealTimeClock) des Computers (Systemzeit) mit einem SHELL-Kommando.
' Das Ergebnis wird in eine Datei umgeleitet. Diese Datei wird im angegebenen Verzeichnis gespeichert.
  'Shell "date -d @" & iCurrentSekunden & " +%A,%t%d.%m.%Y%t%t%tZeit:%t%H:%M:%S" & " > " & Application.Path &/ "time.txt" Wait
' Anzeige des Inhaltes der Datei Time.txt in einer TextBox
  'txbDateTime.Text = File.Load(Application.Path &/ "time.txt")

End ' TCPIP_Socket_Read
