timeout für inetget - gibts da was ?

  • 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 ?

    Einmal editiert, zuletzt von WhiteLion (2. Juli 2010 um 13:50)

  • 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 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
    Ping("www.google.de", $iTimeout)

    [/autoit]

    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.
    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)

    [/autoit]

    LG

    Einmal editiert, zuletzt von WhiteLion (2. Juli 2010 um 12:21)

  • 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.
    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)

    [/autoit]

    LG


    Kann es sein das du versuchst eine Antwort vom Server zu kriegen? Also zu testen ob der Server noch an ist? Dann benutzt doch einfach

    [autoit]

    Ping()

    [/autoit]

    Hier ein Beispiel:

    [autoit]

    $iTimeout = 2000 ;2000 Milisekunden - 2 Sekunden
    $iServer = "www.google.de" ;Der Server der getestet werden soll

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

    $iAnswer = Ping($iServer, $iTimeout) ;Pingt den Server an und wartet auf eine Antwort

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

    If $iAnswer > 0 Then
    MsgBox(262144 + 64, "Status", "Der Server existiert!")
    Else
    MsgBox(262144 + 16, "Status", "Der Server existiert nicht!")
    EndIf

    [/autoit]
  • .. meint ihr so?:

    [autoit]

    $test = InetGet("http://www.test.de" , @TempDir & "\test.txt", 1,1)
    sleep(2000)
    $inetclose($test)

    [/autoit]

    wenn du es so umänderst funktioniert es auch:

    [autoit]

    $test = InetGet("http://www.test.de" , @TempDir & "\test.txt", 1,1)
    sleep(2000)
    if InetGetInfo($test,0) = 0 Then inetclose($test)

    [/autoit]

    ich hatte aber eher an so etwas gedacht (Adlibregister vermieden):

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <array.au3>

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

    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
    $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()

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

    Do
    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])

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

    InetClose($hDownLoad) ; Handle schließen um die Resourcen freizugeben.
    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)

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

    ;FileDelete(@ScriptDir & "\Testdownload.htm")

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

    Func _CalcPerformance($iRead, $bDone)

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

    $tDiff = TimerDiff($tStart)
    $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 ;==>_CalcPerformance

    [/autoit]

    mfg (Auto)Bert