4 votes

Est-ce qu'un Socket InputStream read() se débloque si le serveur s'arrête ?

J'ai un serveur qui s'arrête au bout de 45 secondes s'il n'a pas reçu une demande complète et ferme la connexion. Je me connecte à ce serveur par le biais d'un Socket et écrire ma requête dans le fichier OutputStream .

Socket socket = new Socket("myhost", myPort);
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.write(properRequestMessage);
out.flush();

Je suppose ici que ma demande est bonne (suit mon protocole). Le serveur est censé répondre avec un fichier. J'essaie de lire depuis le socket inputstream :

BufferedReader response = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String in;

while((in = response.readLine()) != null) {
    System.out.println(in);
}

Le site readLine() se bloque ici et je pense que c'est parce que mon serveur pense que ma demande n'est pas correctement terminée et qu'il en attend donc d'autres.

Maintenant, si 45 secondes s'écoulent et que mon serveur s'arrête, est-ce que les readLine() débloquer ou attendre que certains Socket le délai d'attente par défaut ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X