BufferedReader en attente pendant lecture socket[Resolu] - Java - Programmation
Marsh Posté le 12-11-2005 à 15:20:25
tu devrais sortir le accept de ton while car tu n'as pas besoin de rouvrir un socket à chaque fois
ensuite, tu peux effectivement mettre ton readLine dans un thread séparé si il bloque l'execution d'autres parties de ton code
readLine est toujours bloquant
Marsh Posté le 12-11-2005 à 15:25:44
esox_ch a écrit : Le serveur detecte la connection (il passe outre le accept) mais arrivé au readline il bloque et attend quelquechose. |
Naïvement, je dirais que si ton serveur attends une ligne (readline) et que le client n'envoie pas une ligne (pas de writeline, et ta chaîne ne se termine pas par \r\n) le serveur attendra jusqu'à avoir sa fin de ligne
Marsh Posté le 12-11-2005 à 16:33:28
Résultat des courses, la solution était aussi "stupide" que la question. Et je te remercie masklinn pour l'avoir apportée. Le problème était tout simplement le \r\n qui manquait, tout le reste roule. Et effectivmeent j'ai sorti le ss.accept et le setKeepActive du while. Je les avais mis dedans pour ecarter un probleme de fermeture de socket pour une raison y ou x qui m'echappait mais c'est clair que niveau perf c'est mieux quand ça reste dehors.
En tous cas merci beaucoup
Marsh Posté le 12-11-2005 à 16:35:59
(j'ai pas dit stupide hein, mais bon l'absence de parallèle entre les opérations de lecture et d'écriture ça aurait quand même dû te choquer )
(BTW, normalement en java tu peux balancer directement des objets à travers tes sockets en utilisant les streams kivonbien, ça peut servir )
Marsh Posté le 12-11-2005 à 16:40:09
Non c'est moi qui ai dit stupide .
Et effectivement je suis passé a coté sur ce coup ..
Merci en tous cas
Marsh Posté le 12-11-2005 à 17:44:07
Il n'y a rien de stupide à proposer des solutions concrètes, la seule choses stupide pour moi dans ce forum, c'est les grandes gueules qui te disent "t'a qu'à lire la doc", ou bien "c'est pas comme ça qu'on fait" ( sans aucune explication ) ... tout se discute en java....
[Coup de gueule off]
Marsh Posté le 12-11-2005 à 17:55:47
Disons qu'en general ce genre de réponse suit une question qui a déjà été posée plusieurs (dizaines de) fois. Dans mon cas c'est pas une question qui a deja été posée tres souvent (bienque Taz en avait plus ou moins parlé dans un topic sur un probleme de socket en java) et dans la doc c'est pas specifiquement expliqué ... Mais c'est vrai qu'en reflechissant un peu mieux j'aurais pu trouver . En tout cas comme ça maintenant c'est dit et si qqn tombe sur le meme probleme, un coup de recherche et la solution est la
Marsh Posté le 12-11-2005 à 11:18:18
Bonjour,
Etant donné que ça fait un moment que je n'ai plus fait d'appli Java pour mon compte, j'ai décidé de me lancer dans un petit logiciel client/serveur à usage personnel.
Cependant j'ai un problème qui est très probablement tres simple mais que j'arrive pas a resoudre .
Le code de mon petit serveur
Le problème se situe au niveau du readline. Quand un client se connecte et envoie qqch en utilisant :
Le serveur detecte la connection (il passe outre le accept) mais arrivé au readline il bloque et attend quelquechose.
Que dois-je faire? J'ai pensé à separer ça en plusieurs threads mais je vois pas tres bien ce que ça m'apporterais d'avoir un thread qui attend je ne sais quoi pendant que celui principal revient au ss.accept();
Je m'excuse d'avance pour la nature extrement simple de la question, mais tout les exemples que j'ai pu voir sur le net utilisent un systeme proche du mien, donc je comprend pas pourquoi le mien bloque.
Merci d'avance
Message édité par esox_ch le 12-11-2005 à 16:33:45
---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait