java.io.EOFException - Java - Programmation
Marsh Posté le 07-06-2004 à 11:04:32
T'es sur qu'il faudrait pas sortir cette ligne de la boucle ?
incx_out = new ObjectInputStream(socket_out.getInputStream());
Sinon, je pense que ton exception vient du fait que socket_out
n'a pas été correctement initialisé : debug : affiche socket_out et/ou affiche le avec toString pour voir.
Si socket_out est mal initialisé, à chaque itération,
socket_out.getInputStream() te donne soit une exception, soit unb mauvais stream.
Je pense qu'il y a une grande chance que ton socket_out soit mal initialisé quand ça plante.
Marsh Posté le 07-06-2004 à 11:14:33
si je la sors de la boucle ca a pas l'aire de changer quoi que ce soit (l'erreur finit qd meme par arrivé)
Sinon je teste, ce que t as dit, on verra bien si je découvre quoi que soit, mais si socket_out est mal initilialisé, j'aurais du obtenir une exception avant non?
lors du connect ou koi non?
Pourtant ni le client ni le serveur ne remarque quoi que ce soit avant d'entré dans la boucle.
Marsh Posté le 07-06-2004 à 11:26:13
en affichant socket_out j'obtiens toujours la meme chose, qd ca marche ou pas.
Marsh Posté le 07-06-2004 à 14:24:58
Ba déjà laisse la premiere ligne en dehors du code. Parce qu'à chaque itération tu créé un nouvel objet pour rien.
Pour l'exception avec connect. Je sais pas comment t'as géré ça.
Donne quand meme le e.printStackTrace(), et socket_out et incx_out.
Tu ne fais pas de MultiThread la dessus ? si ?
Je sais pas si je pourrai t'aider...
Marsh Posté le 07-06-2004 à 19:52:25
re, desolé si j'ai trainé, j'avais exam de Gui justement
voila pour le stacktrace:
Code :
|
(j'aurais du y penser avant d'ailleurs)
Et oui, le client utilise plusieur thread, en fait celui ci démarre après un processus de connection (qui n'emploie que socket_in), ecoute tout ce qui arrive et le fous dans une file, un autre thread s'oqp du traitement des Message recus.
As tu/avez vous une idée??
Marsh Posté le 07-06-2004 à 21:30:55
Nico5779 a écrit : re, desolé si j'ai trainé, j'avais exam de Gui justement
|
Je pense avoir une idée du problème : un des thread doit utiliser ton Stream ou ta/tes sockets avant que celui/celle(s)-ci aie été complètement initialisé. Il faut que tu t'arranges pour que
les thread ne commencent qu'à recevoir/envoyer qu'apres que la socket et le stream dessus soit initialisé. Sinon apparemment ca risque de merder parfois. => synchronized ta socket et ton stream.
Voilà j'espère que ça pourra t'aider ...
Marsh Posté le 08-06-2004 à 00:05:27
bien vu
J'ai modifié mon processus de connection, de sorte que le server envoie un message bidon sur socket_out avant de lancer les threads, et après un premier test (une 50aine de connect/deconnect) , et on dirait que ca le fait le plus
un grand merci
edit: j'y avait penser mais pas comme ca, j'avais tenter un bourrinnage avec un gros sleep avant la boucle, et curieusement, plus long etait le sleep, plus fréquentes etait l'erreur.
Marsh Posté le 07-06-2004 à 10:05:45
Bonjour,
J'ai un prob avec une appli java,
Dans le bout de code suivant:
Ce bout de code attend systématiquement de lire un objet sur socket_out, dans la plupart des cas, ca marche sans problème, or lors de certain test, assez fréquement (ou je fais rien de particulier) j'obtiens une java.io.EOFException, et le programme boucle indéfiniment et affiche :
error 19 :java.io.EOFException
Et rien de ce que j'ai essayer n'as fonctionner pour gerer cette exception.(j'ai supprimer mes essais dans le codes ci dessus)
Autres constatation, ce problème ne survient qu'avec l'objet "socket_out", (plus haut dans le code, je fais la meme opération avec un autre socket, et le problème n'est jamais apparu)
Et le problème n'apparait jamais , si il n'est pas appararut lors de la première itération de la boucle.
Donc , comment faire pour gèrer ce problème (autrement qu'en coupant le thread en en demandant a l'utilisateur de se reconnecter, solution actuel)?
D'après vous, c'est bien un problème du au système? ou pensez vous plutot que c'est une faute dans mon code (éventuellement ailleurs)?
Voila j'espere que j'ai été assez clair, en attendant merci d'avance pour vos réponses
Message édité par Nico5779 le 07-06-2004 à 10:06:31