hallo,
ich suche eine lösung um bei inetget früher einen timeout zu setzten. also mein script soll nach 2 sekunden wenn keine antwort vom server kommt abbrechen mit der anfrage.... geht das ?
timeout für inetget - gibts da was ?
-
- [ gelöst ]
-
WhiteLion -
2. Juli 2010 um 00:25 -
Geschlossen -
Erledigt
-
-
Hallo whiteLion,
du könntest ja mit AdlibRegister eine Funktion aufrufen die InetGetInfo(0) auswertet und nach 2 Sekunden ohne 1 Byte downgeloaded den Downloadversuch mit InetClose($HandledesDownloads) abbricht. Die gleiche Funktion kannst du benutzen um dir den DownLoad-Fortschritt anzuzuzeigen. Am Ende AdlibUnregister nicht vergessen,
mfg (Auto)Bert
-
sehe dir mal unter
in der Hilfe -> Funktionsreferenz -> InetGet
die backrund function an
und
InetClose() -
Ich würde einfach mal sagen du frags @error ab
[autoit]InetGet("~~Irgentwas")
[/autoit]
If @error Then
MsgBox(0, "Fehler", "Download Fehler"
Else
MsgBox(0, "Erfolg", "Download abgeschlossen.")
EndIf -
Ich schließe mal darauß das du die Internetverbindung testen willst? Mach es ganz einfach mit
[autoit]$iTimeout = 2000 ; In Milisekunden - 2000 Milisekunden sind 2 Sekunden
[/autoit]
Ping("www.google.de", $iTimeout)MfG
-
hey danke für die antworten.
Auch wenn ich noch etwas auf dem schlauch stehe, besonders was die funktion von adlibregister angeht.... hab aber uach noch nicht weiter damit rumprobiert.Hallo whiteLion,
du könntest ja mit AdlibRegister eine Funktion aufrufen die InetGetInfo(0) auswertet und nach 2 Sekunden ohne 1 Byte downgeloaded den Downloadversuch mit InetClose($HandledesDownloads) abbricht. Die gleiche Funktion kannst du benutzen um dir den DownLoad-Fortschritt anzuzuzeigen. Am Ende AdlibUnregister nicht vergessen,
mfg (Auto)Bert
die antwort von sprenger120 verstehe ich nicht, aber evtl wars auch nur blöd von mir erklärt... es ging darum dass eine fehl schlagende anfrage einfach zu lange braucht... mal abgesehen davon das ich den freez des programms habe, ich glaube diesbezüglich hat der bernd wohl diese adlib-sache vorgeschlagen.
[autoit]
auch wie ich mit inetclose den timer beeinflussen soll weiss ich noch nicht ganz ... meint ihr so?:
[/autoit]
$test = InetGet("http://www.test.de" , @TempDir & "\test.txt", 1,1)
sleep(2000)
inetclose($test)LG
-
hey danke für die antworten.
Auch wenn ich noch etwas auf dem schlauch stehe, besonders was die funktion von adlibregister angeht.... hab aber uach noch nicht weiter damit rumprobiert.die antwort von sprenger120 verstehe ich nicht, aber evtl wars auch nur blöd von mir erklärt... es ging darum dass eine fehl schlagende anfrage einfach zu lange braucht... mal abgesehen davon das ich den freez des programms habe, ich glaube diesbezüglich hat der bernd wohl diese adlib-sache vorgeschlagen.
[autoit]
auch wie ich mit inetclose den timer beeinflussen soll weiss ich noch nicht ganz ... meint ihr so?:
[/autoit]
$test = InetGet("http://www.test.de" , @TempDir & "\test.txt", 1,1)
sleep(2000)
$inetclose($test)LG
[autoit]
Kann es sein das du versuchst eine Antwort vom Server zu kriegen? Also zu testen ob der Server noch an ist? Dann benutzt doch einfachPing()
[/autoit]Hier ein Beispiel:
[autoit]$iTimeout = 2000 ;2000 Milisekunden - 2 Sekunden
[/autoit][autoit][/autoit][autoit]
$iServer = "www.google.de" ;Der Server der getestet werden soll$iAnswer = Ping($iServer, $iTimeout) ;Pingt den Server an und wartet auf eine Antwort
[/autoit][autoit][/autoit][autoit]If $iAnswer > 0 Then
[/autoit]
MsgBox(262144 + 64, "Status", "Der Server existiert!")
Else
MsgBox(262144 + 16, "Status", "Der Server existiert nicht!")
EndIf -
ne ne ne, nicht ping!
das muss schon inetget sein und eine downloadanfrage auf einen bestimmten port! -
.. meint ihr so?:
[autoit]$test = InetGet("http://www.test.de" , @TempDir & "\test.txt", 1,1)
[/autoit]
sleep(2000)
$inetclose($test)wenn du es so umänderst funktioniert es auch:
[autoit]$test = InetGet("http://www.test.de" , @TempDir & "\test.txt", 1,1)
[/autoit]
sleep(2000)
if InetGetInfo($test,0) = 0 Then inetclose($test)ich hatte aber eher an so etwas gedacht (Adlibregister vermieden):
Spoiler anzeigen
[autoit]#include <Date.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <array.au3>HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB6 (.NET CLR 2.0.50727)") ; User-Agent (Header) von AutoIt3 ändern, da beim Webhoster dieser gesperrt ist
[/autoit] [autoit][/autoit] [autoit]Global $nKPerSec, $tDiff, $iToDo, $iRTime, $sMSG
[/autoit] [autoit][/autoit] [autoit]
$sUrl = "http://www.autoit.de/index.php?page=Attachment&attachmentID=10230&h=aa527f1f9fc889dabed4de9ca0bebf755a66dd05"
Global $iSize = InetGetSize($sUrl) ;siehe Hilfe zu InetgetSize
If $iSize = 0 Then $iSize = 90000 ;Schätzwert sollte eigentlich nicht vorkommen
$hDownLoad = InetGet($sUrl, @DesktopDir & "\JaYT-DwiMP3-P.exe", 1, 1)
Global $tStart = TimerInit()
Dim $aData[3]
Dim $aKBSec[10]
$start=TimerInit()Do
[/autoit] [autoit][/autoit] [autoit]
Sleep(250)
If $aData[0] > 0 Then
_CalcPerformance($aData[0], $aData[2])
TrayTip("downloading", $sMSG, 10, 16)
Else
if TimerDiff($start) >2000 Then InetClose($hDownLoad)
EndIf
$aData = InetGetInfo($hDownLoad, -1)
Until $aData[2]
$aData = InetGetInfo($hDownLoad, -1)
_CalcPerformance($aData[0], $aData[2])InetClose($hDownLoad) ; Handle schließen um die Resourcen freizugeben.
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, "", "Bytes gelesen: " & $aData[0] & @CRLF & _
"Größe: " & $aData[1] & @CRLF & _
"beendet?: " & $aData[2] & @CRLF & _
"Erfolgreich?: " & $aData[3] & @CRLF & _
"@error: " & $aData[4] & @CRLF & _
"@extended: " & $aData[5] & @CRLF);FileDelete(@ScriptDir & "\Testdownload.htm")
[/autoit] [autoit][/autoit] [autoit]Func _CalcPerformance($iRead, $bDone)
[/autoit] [autoit][/autoit] [autoit]$tDiff = TimerDiff($tStart)
[/autoit]
$iToDo = Round(($iSize - $iRead) / 1024, 2)
$nKBPerSec = Round($iRead / $tDiff * 1000 / 1024, 2)
$iPercent = Round($iRead / $iSize * 100, 2)
if ($iSize = 0) And Not $bDone Then
$iRTime = "unbekannt"
Else
$iRTime = Round($iToDo / $nKBPerSec, 0)
EndIf
$sMSG = Round($iRead / 1024) & "/" & Round($iSize / 1024, 0) & " KB " & " = " & $iPercent & "%" & @CRLF
$sMSG &= "durchschnittlich KB/s = " & $nKBPerSec & @CRLF ;& "aktuell: KB/s " & $nKBAct & @CRLF
If Not $bDone Then
$sMSG = $sMSG & "vermutlich zu Ende:" & StringLeft(StringRight(_DateAdd('s', $iRTime, _NowCalc()), 8), 5)
;ConsoleWrite($sMSG & @CRLF)
Else
$sMSG = $sMSG & "benötigte Zeit = " & Round($tDiff / 1000, 0)
EndIf
;if $iSize > 0 Then $sMSG = $sMSG & " sec"
EndFunc ;==>_CalcPerformancemfg (Auto)Bert
-
ich hab dann die einfache variante genommen mit dem inetclose
danke für die mühen!