TCP Request dauert lange

07/20/2014 16:12 SCORNI#1
Hallo,

ich hatte vor nen kleinen Login bot für das browsergame kapiland zu schreiben. Ich habe das Login-Paket mit live http headers gesnifft und dann in autoit ein codesnippet angepasst. Es funktioniert zwar alles so weit und ich bekomme in Autoit die gleichen Antworten vom Server wie in Firefox. Allerdings dauert es extrem lange bis ich eine Antwort vom server bekomme (bis zu 10 Sekunden).

Ich hoffe einer weiß woran es liegen könnte.


Code:
#include<String.au3>



TCPStartup()
$ip = TCPNameToIP('kapiland.de')
TCPShutdown()  

$loginpost='server=3&USR=scorni&pass=daspwistgeheim'  
$source=TCPRequest($ip,"kapiland.de", "serverwahl.php4", $loginpost) 
$location=_stringbetween($source,"Location: ","Content-type")
msgbox(0,"",$location[0])






Func TCPRequest($sIp, $sHost, $sSeite = "", $sPost = '', $iMaxTime = 10000)
    Local $sPacket, $iSocket, $iTimer
	$msg=1
    If $sPost = '' Then
        $sPacket = 'GET /' & $sSeite & ' HTTP/1.1' & @CRLF
    Else
        $sPacket = 'POST /' & $sSeite & ' HTTP/1.1' & @CRLF
    EndIf
    $sPacket &= 'Host: ' & $sHost & @CRLF & _
            'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0' & @CRLF & _
            'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF & _
            'Accept-Language: de,en-US;q=0.7,en;q=0.3' & @CRLF & _
            'Accept-Encoding: gzip, deflate' & @CRLF & _
            'Referer: http://kapiland.de/' & @CRLF & _
            'Cookie: ' & @CRLF & _
            'Connection: keep-alive' & @CRLF & _
			'Content-Type: application/x-www-form-urlencoded' & @crlf
    If $sPost <> '' Then
        $sPacket &= 'Content-Length: ' & StringLen($sPost) & @CRLF
    EndIf
    $sPacket &= @CRLF
    If $sPost <> '' Then
        $sPacket &= $sPost
    EndIf
    If $msg=1 Then
    MsgBox(0,"Packet",$sPacket)
    EndIf
    TCPStartup()
    If @error Then Return SetError(1, 0, "")
    $iSocket = TCPConnect($sIp, 80)
    If @error Then Return SetError(2, 0, "")
    TCPSend($iSocket, $sPacket)
    If @error Then Return SetError(3, 0, "")
    $iTimer = TimerInit()
    Do
        $sRecv = TCPRecv($iSocket, 1024)
        If TimerDiff($iTimer) > $iMaxTime Then Return SetError(4, 0, "")
    Until $sRecv <> ""
    Do
        $sRecv &= TCPRecv($iSocket, 1024)
    Until @error Or StringInStr($sRecv, '</html>')
    TCPCloseSocket($iSocket)
    TCPShutdown()
    Return $sRecv
EndFunc   ;==>TCPRequest