J'ai une application qui gère plusieurs connexions de socket Java à différents types de machines distantes (certains PC, d'autres sont des périphériques intégrés). Ces sockets et flux ne doivent pas se fermer indéfiniment, sauf pour une très bonne raison (par exemple, panne d'un système distant).Les flux de socket Java se terminent de manière inattendue
Je rencontre fréquemment un problème où le flux d'entrée se termine de manière inattendue, sans aucune raison (la valeur est -1), c'est-à-dire que la machine distante ne signale pas une interruption de connexion. Mais quand je rejette ces -1 lectures et continue la lecture du flux, la machine distante envoie réellement de nouvelles données plus tard. Cela peut durer très longtemps. Je peux aussi écrire dans le flux de sortie aussi.
Dans la situation actuelle, j'ai le choix entre traiter -1 comme fin de flux et fermer le socket (avec des faux positifs), ou ignorer -1 entrée et risque de ne pas être averti des déconnexions réelles.
Je n'ai pas réussi à créer un exemple de ce problème et les problèmes apparaissent de manière aléatoire.
Des idées quel est le problème?
Edité pour ajouter: Le point de terminaison Java est une réécriture d'une application VB existante qui n'avait pas ces problèmes (du moins à ma connaissance).
Je pense que jeter un coup d'œil à votre source serait utile. –
Merci, mais comme je l'ai dit, je n'ai pas encore créé un exemple simple et efficace du problème, et tout cela est beaucoup trop de code. –
"Trop de code", peut faire partie de votre problème. Cela ne devrait pas être si compliqué. –