Mise à jour dans java9 : https://docs.oracle.com/javase/9/docs/api/java/io/InputStream.html#transferTo-java.io.OutputStream-
J'ai vu des fils similaires, mais pas tout à fait ce dont j'ai besoin.
J'ai un serveur qui va essentiellement prendre les données d'un client, le client A, et les transmettre, octet par octet, à un autre client, le client B.
J'aimerais connecter mon flux d'entrée du client A avec mon flux de sortie du client B. Est-ce possible ? Quels sont les moyens de le faire ?
De plus, ces clients s'envoient des messages, qui sont quelque peu sensibles au temps, et la mise en mémoire tampon ne suffira pas. Je ne veux pas d'un tampon de 500, par exemple, et qu'un client envoie 499 octets, puis que mon serveur attende avant de transmettre les 500 octets parce qu'il n'a pas reçu le dernier octet pour remplir le tampon.
Pour l'instant, j'analyse chaque message pour trouver sa longueur, puis je lis les octets de longueur et je les transfère. Je me suis dit (et j'ai testé) que ce serait mieux que de lire un octet et de le retransmettre encore et encore, car cela serait très lent. Je ne voulais pas non plus utiliser un tampon ou une minuterie pour la raison que j'ai indiquée dans mon dernier paragraphe - je ne veux pas que les messages attendent très longtemps avant d'être transmis simplement parce que le tampon n'est pas plein.
Quelle est la meilleure façon de procéder ?