java.net.Exception socketexception: socket TCP fermée Client-Serveur de Communication
Je suis entrain de créer un java application client/serveur sur TCP où nous avons deux sockets:
- L'un est pour l'échange de messages.
- Deux est pour le transfert de fichiers.
J'ai créé dans le Serveur deux ServerSockets afin de créer Un Socket et Deux
en acceptant la ServerSockets.
Au premier abord, le client envoie des octets à la première Prise
de sorte qu'il peut dire au Serveur de fichiers dont il a besoin.
Puis le Serveur par le biais de la deuxième prise envoie le fichier au client.
Après que le client reçoit le fichier tente de renvoyer vers le serveur d'un Transfert de Message Fait.
Là, je reçois l'Exception de la socket fermée.
Cependant je n'ai jamais fermer le socket jusqu'à maintenant.
J'ai seulement fermer le tampon qui sente le fichier.
Même si j'essaie d'ouvrir de nouveau le socketInputStream après que j'ai envoyé le fichier, l'erreur est toujours la même.
Également si je ne ferme pas la mémoire tampon qui est envoyé le fichier, le client n'obtient pas le fichier.
Exception De Serveur
Erreur dans le Message de Retour - java.net.Exception socketexception: socket fermée
Client Exception
Réponse du serveur java.net.Exception socketexception: Logiciel a provoqué l'abandon de la connexion: prise d'erreur d'écriture
Ce que je fais mal?
Assurez-vous que vous êtes à la fermeture de la connexion à l'un de la fin , si ce n'est pas le cas que je suis sûr que vous la fermeture de l'Entrée ou de la Sortie des Flux , de ne pas les fermer jusqu'à ce que vous êtes sûr que vous la communication des données est terminée et vous méthode flush() à chaque fois que vous souhaitez envoyer des données à la prise
double possible de Officiel des raisons pour "Logiciel a provoqué l'abandon de la connexion: prise d'erreur d'écriture"
OriginalL'auteur lemanou | 2013-04-02
Vous devez vous connecter pour publier un commentaire.
Une Prise fermée " exception signifie que l'application qui a attiré l'exception fermé le socket, puis a continué à essayer de l'utiliser. Vous ignorent peut-être que la fermeture de l'entrée ou de flux de sortie d'une prise ferme de l'autre de la rivière et le socket. Pour logiciel a causé l'abandon de la connexion " voir le lien dupliquer.
Si vous avez fermé le socket. Puis plus tard vous avez obtenu une prise fermée' exception, parce que vous avez gardé à l'aide de la socket fermée. Vous devrez ouvrir un nouveau.
En réalité, oui. C'était le problème. J'ai remplacé le tampon lecteur avec un DataOutputStream et après je lis le fichier avec un FileInputStream je l'ai envoyé à travers le DataOutputStream. Je n'ai qu'à fermer la FileInputStream maintenant, pour finir le "transfert". Merci!!!! 🙂
OriginalL'auteur user207421