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!
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!
Einen Rechner auf Online-sein zu prüfen kannst du
[autoit]
Ping("IP oder Host")
nehmen, aber das ist nicht 100% sicher (Ping geht über IMCP, welches man in einer Firewall ablehnen kann)
Oder versuchen mit TCP die Namensauflösung durchzuführen
[autoit]
TCPNameToIP("Name")
mfg
Was für ein Rechner? Ein anderer Rechner im Netzwerk / Internet? Oder der Rechner auf dem dein Skript läuft?
BLinz
.. also das mit ping funzt soweit!
Name2Ip klappt noch nicht, wäre aber eine nette loesung... daher bleibt der thread erstmal "offen".
danke blume!
$host = "google.de"
If Ping($host) > 0 Then
MsgBox(0,$host,"is online")
Else
MsgBox(0,$host,"is offline")
EndIf
MsgBox(0,$host, TCPNameToIP($host) ) ; this returns empty = error
Alles anzeigen
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) ..
Hallo,
Du musst natürlich bevor du TCPNameToIP benutzt, die TCP Engine starten mit
[autoit]
TCPStartup()
bzw mit
[autoit]
TCPShutdown()
stoppen
Also so in der Reihenfolge:
[autoit]
TCPStartup()
$Return = TCPNameToIP("google.de")
ConsoleWrite("Error: " & @error & @CRLF)
TCPShutdown()
mfg
aaaahhhh ...
... funzt
und im erfolgsfall die zeit irgendwo im internet auslesen (nicht lokal).
Was meinst du denn damit? Die Zeit, wie lange der Server schon online ist? Das wird wohl kaum gehen.
@dieter .. nein, nur ein timestamp der realen zeit (aber halt nicht lokal, sondern irgendwo im netz - auf den tag genau reicht mir schon)
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
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.
Und wenn du den Timestamp trotzdem aus dem Internet willst, versuchs mal mit den diversen Zeit-Server, u. a. von Microsoft.
MfG, James C.
Zitatund im erfolgsfall die zeit irgendwo im internet auslesen (nicht lokal).
James: danke, das hat zwar nicht geklappt,
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!"
Ich hatte mal aus einigen Forenbeiträgen im engl. Forum eine Funktion geskriptet, die ich für meine Digitaluhr gebraucht hatte:
#include <Date.au3>
$time = _TimeSync()
MsgBox(0, '', 'Rechnerzeit:' & @TAB & _NowCalc() & @CRLF & 'Atomzeit: ' & @TAB & $time)
;**************************************************************************************************
; 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
;**************************************************************************************************
genau was ich brauche! server lässt sich sogar noch pingen, werde ich morgen gleich testen!
megafettes DANKESCHOEN!!!