Hey
Ich bin momentan einen Server mit au3 am proggrammieren. Leider kommt es vor, wenn man eine Website damit öfters aufruft, dass man als Recv "" zurückbekommt. Dies ist ja schon ziemlich merkwürdig, da der Browser ja zumindestens immer einen Teil vom Header mitschickt, außerdem wurde @error nicht ausgelöst, desshalb vermute ich mal, dass der Browser die zu letzt aufgerufende Website anfordert (was aber nicht ganz stimmt, denn ich bekomme iwie voll oft "" zurück!?) aufjedenfall cached er was, aber wie kann ich das den erkennen?
Wäre nett wenn ihr mit weiterhelfen könntet.
- Hoffentlich habe ich alles gutgenug erklärt, da der Code zulang wäre um hier zu posten (ca 800 Zeilen mit Kommentaren).
MfG AntiSpeed
[TCP] Eigener Server - Recv="", obwohl eindeutig aufgerufen - Cach?
-
- [ gelöst ]
-
AntiSpeed -
17. Dezember 2010 um 23:11 -
Geschlossen -
Erledigt
-
-
Dann mach ein kleines Beispielskript, wo der Fehler auch auftritt,
mfg autoBert
-
Hey
[autoit]
Würde mich freuen wenn einer mal drüber gucken würde(Jaa, das ist billig gemacht;entfernt
[/autoit]MfG AntiSpeed
-
Du weißt aber, dass auch Server brauchen, um etwas zu schicken? Ich schätze mal der bruacht manchmal etwas länger das aufzurufen
-
Danke für deine Antwort.
Aber was soll ich denn dafür abändern? Verstehe deine Antwort nicht ganz..
MfG AntiSpeed -
Würde mich freuen wenn einer mal drüber gucken würde
Würde dir echt gerne weiterhelfen (andere user wahrscheinlich auch), aber dazu müsstest du schon ein lauffähiges Skript posten.
Hat dir autoBert aber auch schon geraten!Die meisten haben echt nicht die Zeit/Lust, dein Skript zu vervollständigen und dann noch nach dem Fehler zu suchen.
Ausnahmen bestätigen natürlich die RegelAlso skripte am Besten ein (lauffähiges!!!) Beispiel, wo der Fehler ebenfalls auftritt. Und beschreib dann nochmal für alle nachvollziehbar was genau du machst und wo genau der Fehler liegt bzw. was du erwartest.
Wenn du keine Lust hast ein Beispielskript zu erstellen, dann füge halt dein 800 Zeilen Skript als Dateihanhang an. Und beschreib wenigstens hier Schritt für Schritt wie man den Fehler reproduziert.
Dann schauen wir weiter...
-
[autoit]
[/autoit]
while 1
$rec=TCPRecv(...)
if $rec<>"" then exitloop
Sleep(10)
wend
Dann hast du gewartet, bis etwas ankommt. Du kannst auch noch einen Timeout einbauen.
Das war was ich meinte, ansonsten den Komplettcode (wie bereits erwähnt) -
@Cyberdyne: Also sinnloser geht es ja wohl nicht mehr.. (Es tritt ja kein Fehler auf, sondern wird nur "" zurückgeliefert)
TheShadowAE: Also ich erkläre nochmal:
-Server ist unter 127.0.0.1:80
-Browser eintippen: 127.0.0.1
-Ganz oft F5 drücken (Wdh laden)
-Irgendwann fragt der Browser mittendrin nicht mehr (Host: 127.0.0.1 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:2.0b7) Gecko/20100101 Firefox/4.0b7 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive), sondern heit "" auf klick auf F5. Also er fragt, liefert aber "" an mich als Frage.Hoffe das dies weiterhilft.
MfG AntiSpeed -
- Offizieller Beitrag
Hallo,
hier gibt es ein kleines Tutorial zu TCP/IP, vielleicht hilft dir das ja weiter:
http://wiki.autoit.de/wiki/index.php/Tutorial#TCP.2FIPGruß
Spider -
Wenn du nur für XPSp2, Server 2003 und höher entwickeln willst, dann kannst du dir auch mal die HTTP-Server Api anschauen
http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx -
@progandy: Hey danke, aber wie kann ich die in au3 benutzen?
GtaSpider : Ich versteh TCP.. Nur nicht warum der Browser mit als Anfrage auf eine Website "" liefert! -
Die Verbindung läuft so ab:
1) Verbindung herstellen
2) Daten sendenZwischen 1) und 2) kann eine Pause entstehen. TCPAccept wartet nur auf das herstellen.
Die Daten werden anschließend gesendet, daher müssen diese nicht sofoert per TCPRecv verfügbar sein. Da TCPRecv nicht wartet, bekommst du nur die Daten, die bis dahin geliefert wurden. Du muss also in einer Schleife empfangen, bis entweder ein Timeout auftritt oder du die im Header angegeben Größe des Body empfangen hast. Dann kannst du das empfangen per TCPRecv beenden.die HTTP-Server-API musst du per DLLCall aufrufen, da kannst du eine UDF ähnlich WinHTTP schreiben
-
@Cyberdyne: Also sinnloser geht es ja wohl nicht mehr..
Doch, siehe dein erster post
Apropos, hab auch ein Problem mit meiner Variablen $ismirdochegal die ist ebenfalls immer Leer.
Der Code hat aber zig Zeilen und wills hier nicht posten.
Helft mal
(Es tritt ja kein Fehler auf, sondern wird nur "" zurückgeliefert)
Und das ist Richtig? ...Oder ein Fehler? :pinch:@Topic
Kein Kommentar, solang ich kein sinnvolles Skript zum Testen habPS:
Entschuldigung , das ich meine Hilfe angeboten hab, kommt nicht wieder vor! -
Hast du mein Beitrag eigentlich beachtet? Ich schreibe die (warscheinliche) Lösung des Problems das du dadrunter nochmal genauer schilderst
-
@Progandy&TheShadowAE:
Ahh, jetzt hab ichs verstanden! Danke, ihr beide habt mir super weitergeholfen.Danke für alle Antworten.
MfG AntiSpeed