Quelle est la différence entre la fermeture de l'Entrée/OutputStream et de fermeture de Socket directement?
Je me demandais ce que java n'lorsque nous appelons à proximité sur l'inputStream et outStream associée à une prise de courant. Quelle est la différence dès la clôture de l'appel sur le socket, je.e Prise.close().
si nous suffit de fermer les io de flux sur le socket, mais ne pas fermer le socket, peut-on rouvrir le groupe ar sur le socket de nouveau?
Merci d'avance!
Vous devez vous connecter pour publier un commentaire.
Vous devez fermer le ultrapériphériques flux de sortie que vous avez créé à partir de la prise. Qui va tirer la chasse. Fermeture soit le support ou le flux d'entrée ne le fait pas donc il n'est pas adéquate. Ayant fermé que les flux de sortie, vous n'avez pas besoin de faire autre chose.
shutdownOutput
- "toutes les données écrites précédemment sera envoyé suivie par le protocole TCP est normal de fin de connexion de la séquence"getOutputStream
- "Fermeture de l'retourné OutputStream va fermer les associés socket"close
- ne dit rien sur la chasse et la NAGEOIRE.À partir de la documentation de l'api java pour Socket:
La fermeture de la InputStream de la Prise conduiront à la fermeture de la Socket. Il en va de même pour la fermeture de la OutputStream de la Douille.
À partir de la documentation de l'api java pour Socket#getInputStream()
Vérifiez la documentation de l'API, il est là pour une raison.
C'est plus un commentaire qu'une bonne réponse: (je préfère ajouter un commentaire à l'une des réponses ci-dessus, mais je n'ai pas de rep)
La question, comme je l'ai lu, est "puis-je fermer un flux sur un socket puis ouvrir un flux sur la même prise?"... mais les gens semblent être de répondre à ceci: "comment dois-je fermer proprement mon socket?"... ce qui n'est pas la question posée.
La réponse à la question posée est "non". Lorsque vous fermez le ruisseau, vous fermez la prise.
(Je ne comprends pas pourquoi, dans un cas au moins, quelqu'un pourrait poser cette question. Lorsque vous êtes en streaming Propriétés Java sur une douille de l'extrémité de réception a qu'à voir les expressions du FOLKLORE pour reconnaître la fin de l'propriétés - pour le récepteur pour voir EOF l'expéditeur a fermer le flux de données/socket. MAIS, si vous avez une commande/réponse de protocole de fonctionnement au cours de cette prise, vous NE voulez PAS fermer ou vous perdrez le canal que vous voulez envoyer une réaction sur. Voir Java streaming Propriétés sur une Socket pour une façon de gérer cela)