Net-srac Geschrieben 9. April 2002 Teilen Geschrieben 9. April 2002 Ich hab eine Frage zu den Socketfunktionen send() und recv(). Die erste Version meines Programmes hat mit Standardein- und Ausgabe auf dem Socket gearbeitet. Also print und <>. Nun ist es ja hier so, das ein '\n' am ende der zu sendenden Zeile dafür sorgt, dass der Buffer geleert wird, und die Zeile auf den Socket gestellt wird. <> wartet an der anderen Seite so lange bis etwas auf das Socket kommt. So hab ich eine einwandfreie kommunikation zwischen client und Server hinbekommen, da immer einer auf den anderen gewartet hat, um diese Zeilen später auszuwerten. Nun will ich Dateien übertragen. Also muß ich meinen Socket auf binmode schalten. Nun ist jetzt aber '\n' bei meinen Befehlen, die übertragen werden nutzlos geworden. d.H. es wird wieder gebuffert und gesendet wenn der Buffer voll ist. Lange Rede kurzer Sinn, hier meine Fragen. 1. gibt es eine möglichkeit vom binmode wieder in einen normalen modus zu schalten? 2. wie erreiche ich denn, bei send und recv, dass nichts gebuffert, sondern alles sofort beim aufruf gesendet wird. Ich habe header ähnlich dem: "SAVEFILE§$file§$sizeoffile§$sessionID§" den ich auf der anderen Seite auswerten muß bevor entschieden wird was as nächstes gemacht wird. Somit bräuchte ich immer eine kommunikation 1.client ->server if then.... 2.server->client if then... 3.client-> server if then.. und so weiter. ich hoffe ihr habt eine Lösung. Danke für die Mühen. ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
root@localhost Geschrieben 9. April 2002 Teilen Geschrieben 9. April 2002 hallo wenn du IO::Socket benutzt kann man das (oder heißt das "den") Socket anweisen den Puffer automatisch zu leeren: $socket_handle->autoflush(1); bzw. $client->autoflush(1); vielleicht hilfts ja bis denn Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.