2010-05-19 4 views
1

je veux faire une activité client-serveur comme ceci: 1. d'abord le client envoie/écrit au flux de sortie 2. les réponses du serveur avec certaines données qui seront lues avec le flux d'entrée 3. après avoir reçu les données, le client envoie/écrit sur le flux de sortie à nouveau pour répondre que les données ont été reçuesPuis-je écrire dans le flux de sortie de données après avoir lu la réponse du flux d'entrée de données?

maintenant, dois-je fermer le flux de sortie et le rouvrir avant de passer à l'étape n ° 3? aussi si quelqu'un pouvait me fournir un extrait, ce serait vraiment utile. merci

Répondre

1

Vous pourriez si vous voulez, mais vous n'avez pas besoin. Toutefois, vous devrez flush() après avoir écrit au OutputStream au cas où il est mis en mémoire tampon.

Le problème serait de savoir quand lire. Si le nombre d'octets à lire est disponible et que les performances ne sont pas un problème, vous pouvez utiliser l'appel de blocage readFully. Mais ce n'est qu'une stratégie possible.

+0

merci, mais avant que j'arrive à écrire pour diffuser pour la deuxième fois, j'ai eu l'exception RuntimeException Stream fermée. Je n'ai pas fait fermer() – Sirius

+0

Je vois de l'autre commentaire que vous faites une connexion HTTP. Si oui, cela a du sens. Les navigateurs n'utiliseront pas le même lien TCP pour envoyer deux POST différents. Donc, fondamentalement, une fois la première connexion HTTP terminée, elle sera fermée par le client (ce qui oblige le serveur à lancer une erreur de flux fermé lorsqu'il essaie d'écrire sur cette connexion). Lorsque le client envoie le deuxième POST, un autre lien TCP est démarré. –

+0

si oui, avez-vous une solution à cela. Je suis vraiment coincé, il doit y avoir la deuxième demande POST – Sirius

0

Google est votre ami. Voir this.

+0

merci Chuk mais j'utilise httpconnection parce que j'ai affaire avec le script PHP, et je veux envoyer les données via POST. le côté serveur l'attraperait puis effectuerait une requête de base de données dont les résultats seraient renvoyés au client pour être lus et traités. Le client renverrait ensuite le résultat du traitement au serveur via POST. – Sirius

Questions connexes