Methode readline de BufferedReader se bloque
m3allem58
Messages postés
58
Date d'inscription
Statut
Membre
Dernière intervention
-
m3allem58 Messages postés 58 Date d'inscription Statut Membre Dernière intervention -
m3allem58 Messages postés 58 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un programme client et un autre serveur qui communiquent en mode socket.
le client envoie un message au serveur et ça marche.
La réponse du serveur arrive aussi au client , je veux transformer le Stream au String mais ça bloque au niveau de la methode readLine, voici le code:
ça débloque quand le programme serveur ferme la connexion socket.
merci.
j'ai un programme client et un autre serveur qui communiquent en mode socket.
le client envoie un message au serveur et ça marche.
La réponse du serveur arrive aussi au client , je veux transformer le Stream au String mais ça bloque au niveau de la methode readLine, voici le code:
public static String fromStreamToString(InputStream inputStream) throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder out = new StringBuilder();
String line = null;
try {
if (reader.ready()) {
while ((line = reader.readLine()) != null) {
out.append(line);
}
}
} catch (IOException e) {e.printStackTrace();}
return out.toString();
}
ça débloque quand le programme serveur ferme la connexion socket.
merci.
A voir également:
- Methode readline de BufferedReader se bloque
- Code puk bloqué - Guide
- Téléphone bloqué code verrouillage - Guide
- Pavé tactile bloqué - Guide
- Compte gmail bloqué - Guide
- Windows update bloqué - Guide
2 réponses
La méthode readLine est normalement une méthode bloquante, donc qui va attendre l'arrivée d'un message pour le lire.
Ici d'après le code lorsque le serveur répond, la réponse est bien mise dans out, seul problème, tant que readLine n'est pas null, alors on attend un nouveau message.
Je ne sais pas ce que tu entends par débloque, mais s'il s'agit du fait que le programme est débloqué quand tu fermes le serveur, alors c'est tout à fait normal, puisque reader est basé sur l'input stream, lequel est je suppose basé sur la socket.
Donc socket fermée = input stream fermé = reader se basant sur null = déblocage
Ici d'après le code lorsque le serveur répond, la réponse est bien mise dans out, seul problème, tant que readLine n'est pas null, alors on attend un nouveau message.
Je ne sais pas ce que tu entends par débloque, mais s'il s'agit du fait que le programme est débloqué quand tu fermes le serveur, alors c'est tout à fait normal, puisque reader est basé sur l'input stream, lequel est je suppose basé sur la socket.
Donc socket fermée = input stream fermé = reader se basant sur null = déblocage