OnlineCheck und GetOnlineTime ...

  • hi leute,
    ich würde gerne prüfen ob ein rechner online ist,
    und im erfolgsfall die zeit irgendwo im internet auslesen (nicht lokal).

    kann mir jmd auf die sprünge helfen ich finde da nichts nach 2004 (vielleicht fehlen mir die key-words).

    thx!

    Einmal editiert, zuletzt von UPIA (25. November 2011 um 22:30)

  • .. also das mit ping funzt soweit!
    Name2Ip klappt noch nicht, wäre aber eine nette loesung... daher bleibt der thread erstmal "offen".

    danke blume!


    EDIT: BLinz ... also es soll eigentlich nur festgestellt werden ob der rechner (beliebig) auf dem das autoit-script laeuft mit dem inet verbunden ist, nicht ob autoit.de online ist (werde den host natürlich aendern) ... wenn das so ist, will ich eine zeit aus dem inet auslesen (kann ich auch mit IE.au3 etwas aufwändiger hinkriegen, dachte nur da gibts n befehl, der einen timestamp oä zurückgibt) ..

    Einmal editiert, zuletzt von UPIA (25. November 2011 um 17:01)

  • EDIT: BLinz ... also es soll eigentlich nur festgestellt werden ob der rechner (beliebig) auf dem das autoit-script laeuft mit dem inet verbunden ist, nicht ob autoit.de online ist (werde den host natürlich aendern) ... wenn das so ist, will ich eine zeit aus dem inet auslesen (kann ich auch mit IE.au3 etwas aufwändiger hinkriegen, dachte nur da gibts n befehl, der einen timestamp oä zurückgibt) ..

    erzeug dir den Timestamp doch einfach selbst. Die Makros

    [autoit]

    @year
    @mon
    @MDay

    [/autoit]

    sollten dir dabei behilflich sein. Wenn du dann noch die lokaleUhrzeit mit dem INet gelegentlich synchronisieren lässt (Doppelklick auf die Uhrzeit im Tray und dort das Häckchen setzen) hast du lokal immer eine Zeit die denen Ansprüchen genügt.

    Einmal editiert, zuletzt von autoBert (25. November 2011 um 18:35)

  • Zitat

    und im erfolgsfall die zeit irgendwo im internet auslesen (nicht lokal).

    James: danke, das hat zwar nicht geklappt, :thumbup:
    aber ich hab mir meine eigene timestamp page gebastelt (php) und ne GetNetTime() funktion für autoit kreiert.

    "Man muss das Leben nicht verstehen, dann wird es werden wie ein Fest!"

    • Offizieller Beitrag

    Ich hatte mal aus einigen Forenbeiträgen im engl. Forum eine Funktion geskriptet, die ich für meine Digitaluhr gebraucht hatte:

    Spoiler anzeigen
    [autoit]


    #include <Date.au3>
    $time = _TimeSync()
    MsgBox(0, '', 'Rechnerzeit:' & @TAB & _NowCalc() & @CRLF & 'Atomzeit: ' & @TAB & $time)

    [/autoit] [autoit][/autoit] [autoit]

    ;**************************************************************************************************
    ; Ab hier beginnen die Funktionen, zum holen der Zeit aus dem Internet (Quelle: http://www.autoitscript.com/forum/)
    ;**************************************************************************************************
    Func _TimeSync()
    Local $ntpServer = '1.de.pool.ntp.org'
    UDPStartup()
    Dim $socket = UDPOpen(TCPNameToIP($ntpServer), 123)
    If @error <> 0 Then Return SetError(1)
    ;$status = UDPSend($socket, MakePacket('1b0e010000000000000000004c4f434ccb1eea7b866665cb00000000000000000000000000000000cb1eea7b866665cb'))
    Local $status = UDPSend($socket, MakePacket('1b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'))
    If $status = 0 Then Return SetError(1)
    Local $data = '', $a = TimerInit() ; Timer setzen, damit im Fehlerfall die Schleife abgebrochen wird
    While $data = ''
    $data = UDPRecv($socket, 100)
    sleep(100)
    If TimerDiff($a) > 1000 Then ExitLoop ; Wenn Timer > 1sek. (Fehler), dann Schleife verlassen
    WEnd
    If $data <> '' Then
    UDPShutdown()
    Local $unsignedHexValue = StringMid($data,83,8); Extract time from packet. Disregards the fractional second.
    Local $value = UnsignedHexToDec($unsignedHexValue)
    Local $TZinfo = _Date_Time_GetTimeZoneInformation()
    Local $TZoffset = -(UnsignedToLong($TZinfo[1]) + (UnsignedToLong($TZinfo[4])*($TZinfo[0]<2)) + (UnsignedToLong($TZinfo[7])*($TZinfo[0]=2)))
    Local $UTC = _DateAdd('s',$value,'1900/01/01 00:00:00')
    Return _DateAdd('n',$TZoffset,$UTC)
    EndIf
    SetError(1)
    EndFunc
    ;**************************************************************************************************
    Func MakePacket($d)
    Local $p = ''
    While $d
    $p &= Chr(Dec(StringLeft($d,2)))
    $d = StringTrimLeft($d,2)
    WEnd
    Return $p
    EndFunc
    ;**************************************************************************************************
    Func UnsignedHexToDec($n)
    Local $ones = StringRight($n,1)
    $n = StringTrimRight($n,1)
    Return dec($n)*16+dec($ones)
    EndFunc
    ;**************************************************************************************************
    ; http://support.microsoft.com/kb/189323
    ; Gibt Die Zahl mit Vorzeichen zurück.
    ; Bei Fehler ( kleiner 0 oder größer MAXINT_4) wird der übergebene Wert zurückgegeben und @error auf 1 gesetzt.
    Func UnsignedToLong($Value)
    Local Const $OFFSET_4 = 4294967296
    Local Const $MAXINT_4 = 2147483647
    If $Value < 0 Or $Value >= $OFFSET_4 Then Return SetError(1,0,$Value) ;' Overflow
    If $Value <= $MAXINT_4 Then
    Return $Value
    Else
    Return $Value - $OFFSET_4
    EndIf
    EndFunc
    ;**************************************************************************************************

    [/autoit]