remy1066
Messages postés51Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention31 octobre 2006
-
13 mars 2006 à 14:06
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 2011
-
15 mars 2006 à 10:39
salut,
je possède une machine qui recoit plusieurs petits flux de données.
je souhaiterai rassembler tous ces petits flux pour en faire qu'un
seul, biensur en gardant l'ordre dans lequel ils sont arrivés. de
manière simplifiée, ca serait de les mettre les uns a la suite des
autres.
mon pb est que je ne vois pas tro comment mettre en oeuvre le traitement.
deja, est il possible de concatener plusieurs flux de différents InputStream pour les mettre dans un seul?
peut etre que la solution est de tt mettre dans un buffer et de tt
renvoyer a pres... mais je prefere utiliser cette solution en dernier
recours...
remy1066
Messages postés51Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention31 octobre 2006 13 mars 2006 à 14:09
en relisant mon message, je me suis a percu que je n'etais pas suffisamment clair... dsl.
en fait, je recois plusieurs petits flux sur ma station de la part d'un
équipement, et je souhaiterai les rassembler pour en faire un gros flux
pour les rebalancer sur un autre équipement...
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 13 mars 2006 à 14:33
Salut,
tu peux lire plusieurs flux et tous les écrire dans un seul. Si ton appli a un comportement séquentiel (tu reçois tous les flux les uns derrière les autres), il n'y a pas de pb particulier.
Si ton appli est mulithreadée, il faudra que tu mettes en place des contrôles pour éviter des écritures parallèles.
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 15 mars 2006 à 10:39
Ton flux de sortie sera un buffer, tant qu'on ne le lit pas, les données restent. Cela revient au même vu qu'il faudra que tu envoies le buffer.
Sinon, ben c'est simple, tu lis chaque flux et tu écris dans le flux de sortie. En gros ça donne ça, à répéter pour tous les flux en entrée.
InputStream fluxEntrant=...
BufferedOutputStream out = new BufferedOutputStream(fluxEntrant);
OutputStream fluxSortant=...
BufferedInputStream bufferedInputStream = new BufferedInputStream(fluxSortant);
byte[] buffer = new byte[4096];
int nb = 0;
while ((nb = bufferedInputStream.read(buffer)) != -1) {
out.write(buffer, 0, nb);
}