Aus Socket lesen bis Zeilenende
-
Hallo,
Gibt es einen eleganteren Weg, unter Windows aus einem Socket bis zum Zeilenende (oder sonst irgendeinem Delimiter) zu lesen, als entweder byteweise zu lesen oder irgendwo einen Zwischenspeicher zu verwalten, und die Daten, die man ueber das Zeilenende hinaus liest, dort bis zum naechsten Aufruf abzulegen? Ich stehe gerade irgendwie auf dem Schlauch und dachte mir, ich frage hier mal nach.
Der Hintergrund der Frage ist folgender: Ich bastele an einem Programm, das aus Performancegruenden auf mehrere Rechner verteilt werden muss. Ausserdem ist ein Teil in Java geschrieben, der Rest in C++. Zwischen den C++-Programmen hatte ich die Verbindung bislang so, dass ich fuer jede Nachricht zunaechst einen Header geschickt habe, mit der Information, wie viele Bytes die Nachricht hat, und dann die eigentliche Nachricht. Die Java-Programme kommunizieren bislang ueber PrintWriter/BufferedReader und ich frage mich, was der guenstigste Weg ist, beides zusammenzubringen. Entweder die Java-Programme so umzustellen, das sie direkt mit ByteInput/OutputStreams arbeiten, oder meine C++-Programme dazu zu bringen, vernuenftig mit den via Java verschickten Nachrichten umzugehen.
Ich bin mir fast sicher, dass ich die einzig vernuenftige Option uebersehen habe... Vielleicht kann mir ja jemand auf die Spruenge helfen!

Danke im Voraus,
Squirrel

-
wenn du keine binären daten versendest und weist das du vermeiden kannst das dein delimeter zufällig in den binären daten auftreten kann dann würde ich es damit machen, ansonsten würde ich an deiner stelle mal schauen was einfacher ist,
das java-verfahren für einzelne datentypen zu übernehmen oder den java programmen deine header beizubringen und den einen reinen bytestream zu verwenden
-
Danke!
Ich habe mich letztendlich entschieden, auf der C++-Seite eine Klasse auf Basis von CSocket zu implementieren, die mit Java-BufferedReader und PrintWriter auf der Gegenseite kommunizieren kann, und zur Applikation hin Funktionen wie readLine bietet. Da ich eigentlich aus der Java-Ecke komme, werde ich die wahrscheinlich noch haeufiger gebrauchen koennen. 