Bon je vais essayer de faire simple.
voici a quoi mon code ressemble :
cote serveur :
cote client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 while(...){ in = new ObjectInputStream(...) in.read(); out = new ObjectOutputStream(...) out.write(...); }
mon probleme survient lorsqu'il y a beaucoup d'iterations a effectuer. L'erreur correspondante est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 while(...){ out = new ObjectOutputStream(...) out.write(...); in = new ObjectInputStream(...) in.read(); }
java.net.SocketException: Software caused connection abort: socket write error
Je suppose que c'est du a une fuite de memoire ou quelque chose comme ca, car j'utilise j'appelle des constructeur a chaque iteration de la boucle.
j'ai donc essaye de rendre les varialbes null et d'appeller le garbage collector, mais rien y fait.
Je pense que la solution serait de sortir les appels de constructeur de la boucle :
cote serveur :
cote client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 in = new ObjectInputStream(...) out = new ObjectOutputStream(...) while(...){ in.read(); out.write(...); }
Mais la un autre probleme se pose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 out = new ObjectOutputStream(...) in = new ObjectInputStream(...) while(...){ out.write(...); in.read(); }
d'apres la javadoc new ObjectInputStream(...) est bloquant, il reste bloqué jusqua ce que l'outputstream correspondant soit "ecrit".
que faire ?
je peux fournir des sources si necessaire.
merci d'avance
Partager