Update in Java9: https://docs.oracle.com/javase/9/docs/api/java/io/InputStream.html#transferTo-java.io.OutputStream-
Ich habe einige ähnliche, aber nicht ganz das gesehen, was ich brauche.
Ich habe einen Server, der im Grunde Eingaben von einem Client, Client A, nimmt und diese Byte für Byte an einen anderen Client, Client B, weiterleitet.
Ich möchte meinen Eingabestream von Client A mit meinem Ausgabestream von Client B verbinden. Ist das möglich? Wie geht das?
Außerdem senden sich diese Clients gegenseitig Nachrichten, die etwas zeitkritisch sind, sodass das Puffern nicht ausreicht. Ich möchte keinen Puffer von beispielsweise 500 und ein Client sendet 499 Bytes. Dann hält mein Server die Weiterleitung der 500 Bytes zurück, da er nicht das letzte Byte empfangen hat, das den Puffer füllt.
Im Moment analysiere ich jede Nachricht, um ihre Länge zu ermitteln, lese dann Längenbytes und leite sie weiter. Ich dachte (und testete), dass dies besser wäre, als ein Byte zu lesen und ein Byte immer wieder weiterzuleiten, da dies sehr langsam wäre. Ich wollte aus dem Grund, den ich in meinem letzten Absatz angegeben habe, auch keinen Puffer oder Timer verwenden - ich möchte nicht, dass Nachrichten, die wirklich lange warten, durchkommen, nur weil der Puffer nicht voll ist.
Was ist ein guter Weg, um dies zu tun?