Bonjour,

J'avais réalisé une application pour échanger entre un serveur et un client (une app android) et ça fonctionne du tonnerre... jusqu'à ce que je fasse une modification, qui me rend l'échange complètement non opérationnel. Je suis revenu en arrière aussi loin que possible, mais rien à faire. Je tourne en rond impossible de trouver la cause.
J'ai isolé au maximum et ça plante encore.
Voici le code.

Côté client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public void sendToServer(byte[] data) {
 
        /*
         * La classe permet de lancer un Thread tout en passant une variable en paramètre
         */
        class sendP implements Runnable {
 
 
            byte[] data;
            int status;
 
 
            /*
             * Constructeur : permet de passer la liste des images en paramètre
             */
            sendP(byte[] dat) {
                data = dat;
            }
 
 
            /*
             * Transfert des fichiers sur le serveur
             */
            public void run() {
 
 
                try {
 
 
                    Socket socket = new Socket(SERVER_ADDR, PORT);
 
 
                    DataOutputStream dOut = new DataOutputStream(socket.getOutputStream());
                    DataInputStream dIn = new DataInputStream(socket.getInputStream());
 
 
                    Log.v("[DEBUG]", "int en attente de lecture --> ça bloque ici");
                    status = dIn.readInt();
                    Log.v("[DEBUG]", "int lu --> quand le serveur ferme brutalement on y arrive");
 
 
                    if (status == 1) {
 
                        Log.v("[DEBUG]", "Valeur reçue");
                        dOut.writeInt(7);
                        dOut.flush();
 
 
                    } else {
                        Log.e("[ERROR]", "Le serveur n'a pas confirmé l'ouverture");
                    }
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                } 
                finally 
                {
 
                    snackbarconfirm.setDuration(3000);
                    snackbarconfirm.show();
 
 
                }
            }
        }
 
 
        new Thread(new sendP(data)).start();
    }
Coté serveur (je ne mets pas la classe qui lance treatClient(), elle n'a pas trop d'intérêt d'autant qu'elle n'a pas changé):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.io.DataInputStream;import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.Socket;
 
 
public class treatClient {
 
 
    Socket client;
 
 
    public treatClient(Socket sock) {
          client = sock;
    }
 
 
    public void open() {
 
 
        Thread t = new Thread(new Runnable() 
        {
            public void run()
 
            {
 
                int status = 0;
 
                try {
 
 
                    DataInputStream stdIn = new DataInputStream(client.getInputStream());
                    DataOutputStream stdOut = new DataOutputStream(client.getOutputStream());
 
 
                    stdOut.writeInt(1);
                    stdOut.flush();
 
                                        // Un autre test pour fermer la connection. Le client envoie 7
                                        status = stdIn.readInt();
                    if (status == 7) 
                    {
                        System.out.println("Fin de la transmission cliente.");
                        stdIn.close();
                        stdOut.close();
                    }
 
 
 
                } 
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        });
 
 
        t.start();
    }
}
Mais là, le client ne reçoit jamais 1. La connection est bien ouverte.
En revanche, si je fermer le serveur brutalement, je reçois ma données au bout de 5 secondes à peu près...

Avez-vous une idée de ce qui plante?
Je me demande si ce n'est pas des mises à jours plus amont (android, serveur linux, box orange... ?)

Merci d'une quelconque aide.