9. April 200223 j 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. )
9. April 200223 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.