[TCP] Eigener Server - Recv="", obwohl eindeutig aufgerufen - Cach?

  • 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

    Nur keine Hektik - das Leben ist stressig genug

    Einmal editiert, zuletzt von AntiSpeed (19. Dezember 2010 um 20:36)

  • Hey
    Würde mich freuen wenn einer mal drüber gucken würde(Jaa, das ist billig gemacht :D :(

    [autoit]

    ;entfernt

    [/autoit]

    MfG AntiSpeed

    Nur keine Hektik - das Leben ist stressig genug

    Einmal editiert, zuletzt von AntiSpeed (19. Dezember 2010 um 20:37)

  • 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 Regel :P

    Also 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]


    while 1
    $rec=TCPRecv(...)
    if $rec<>"" then exitloop
    Sleep(10)
    wend

    [/autoit]


    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.. :thumbdown: (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

    Nur keine Hektik - das Leben ist stressig genug

  • Die Verbindung läuft so ab:
    1) Verbindung herstellen
    2) Daten senden

    Zwischen 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.. :thumbdown:


    Doch, siehe dein erster post :rofl:
    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 :thumbup:


    (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 hab :sleeping:

    PS:
    Entschuldigung , das ich meine Hilfe angeboten hab, kommt nicht wieder vor! :rolleyes:

  • @Progandy&TheShadowAE:
    Ahh, jetzt hab ichs verstanden! Danke, ihr beide habt mir super weitergeholfen. :thumbup:

    Danke für alle Antworten.
    MfG AntiSpeed

    Nur keine Hektik - das Leben ist stressig genug