Bonjour à tous !

Je vous sollicite afin d'obtenir un peu d'aide pour mon programme. Je développe actuellement une application Android qui communique avec un serveur C++ mais lorsque j'ai besoin de lire une donnée envoyé par ce serveur, la méthode read de l'InputStream de mon client Android se bloque et je n'arrive finalement pas à récupérer la valeur.. Bien qu'il y est pas mal de tuto sur le web, je n'ai pas trouvé la méthode qui me permettrais d'arriver à mes fins.. Je souhaite simplement lire un int envoyé par le serveur à partir du client Android. Merci d'avance pour l'aide que vous me porterez.

En sachant que j'ai réussi à récupérer une valeur de mon serveur vers le client Android mais que je n'arrive pas à réitérer l'opération dans le OnClickListener "buttonTesterBDDOnClickListener" ..

Voici le code côté Android :

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
import android.app.Activity;
import android.os.Bundle;
import android.os.AsyncTask;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
 
public class ActivityTwo extends Activity {
 
    Button buttonTesterEcran;
    Button buttonTesterBDD;
    Button buttonTesterRFID;
    Button buttonTesterVerrou;
    Button quitter;
 
    TextView messageErreur, bikeco;
    ImageView check, uncheck, check2, uncheck2, check3, uncheck3, check4, uncheck4;
    ImageView nivNULL, niv15, niv50, niv100;
 
    Socket socket = null;
 
    int valRFID, valLCD, valBDD, valV;
 
    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.activitydeux); // Lien vers le XML
 
        buttonTesterEcran = (Button)findViewById(R.id.buttonTester);
        buttonTesterBDD = (Button)findViewById(R.id.buttonTester2);
        buttonTesterRFID = (Button)findViewById(R.id.buttonTester3);
        buttonTesterVerrou = (Button)findViewById(R.id.buttonTester4);
        messageErreur = (TextView)findViewById(R.id.error);
        uncheck = (ImageView)findViewById(R.id.uncheck);
        check = (ImageView)findViewById(R.id.check);
        uncheck2 = (ImageView)findViewById(R.id.uncheck2);
        check2 = (ImageView)findViewById(R.id.check2);
        uncheck3 = (ImageView)findViewById(R.id.uncheck3);
        check3 = (ImageView)findViewById(R.id.check3);
        uncheck4 = (ImageView)findViewById(R.id.uncheck4);
        check4 = (ImageView)findViewById(R.id.check4);
        quitter = (Button)findViewById(R.id.quitter);
        bikeco = (TextView)findViewById(R.id.bikeco);
 
        nivNULL = (ImageView)findViewById(R.id.nivNULL);
        niv15 = (ImageView)findViewById(R.id.niv15);
        niv50 = (ImageView)findViewById(R.id.niv50);
        niv100 = (ImageView)findViewById(R.id.niv100);
 
        ////////////////////////////////////////////////
 
        nivNULL.setVisibility(View.GONE);
        niv15.setVisibility(View.GONE);
        niv50.setVisibility(View.GONE);
        niv100.setVisibility(View.VISIBLE);
 
        buttonTesterEcran.setVisibility(View.GONE);             // BOUTON TESTER LCD
        buttonTesterBDD.setVisibility(View.GONE);               // BOUTON TESTER BDD
        buttonTesterRFID.setVisibility(View.GONE);              // BOUTON TESTER RFID
        buttonTesterVerrou.setVisibility(View.GONE);            // BOUTON TESTER VERROU
        bikeco.setVisibility(View.GONE);
 
        messageErreur.setVisibility(View.VISIBLE);
        check.setVisibility(View.GONE);
        uncheck.setVisibility(View.GONE);
        check2.setVisibility(View.GONE);
        uncheck2.setVisibility(View.GONE);
        check3.setVisibility(View.GONE);
        uncheck3.setVisibility(View.GONE);
        check4.setVisibility(View.GONE);
        uncheck4.setVisibility(View.GONE);
 
        buttonTesterEcran.setOnClickListener(buttonTesterEcranOnClickListener);
        buttonTesterBDD.setOnClickListener(buttonTesterBDDOnClickListener);
        buttonTesterRFID.setOnClickListener(buttonTesterRFIDOnClickListener);
        buttonTesterVerrou.setOnClickListener(buttonTesterVerrouOnClickListener);
        quitter.setOnClickListener(quitterOnClickListener);
 
        ClientTCP ClientTCP = new ClientTCP("192.168.2.56", Integer.parseInt("6666")); //Création du ClientTCP
        ClientTCP.execute();
 
 
        }
 
        //ZONE ONCLICKLISTENER
 
    View.OnClickListener quitterOnClickListener = new View.OnClickListener(){
 
        @Override
        public void onClick(View arg0) {
            try{
                try{
                    OutputStream out = socket.getOutputStream();
                    out.write(9); // 9 = Quitter l'application
                }
                catch(Exception exc)
                {
                    exc.printStackTrace();
                }
                socket.close();
                finish();
            }catch(Exception e){
            }
        }
    };
 
    View.OnClickListener buttonTesterEcranOnClickListener = new View.OnClickListener(){
        @Override
        public void onClick(View arg0) {
            try{
                OutputStream out = socket.getOutputStream();
                out.write(1); // Lancement fct LCD
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    };
 
    View.OnClickListener buttonTesterBDDOnClickListener = new View.OnClickListener(){
        @Override
        public void onClick(View arg0) {
            try {
                OutputStream out = socket.getOutputStream();
                out.write(2); // 2 = Lancement fct BDD
 
                InputStream is = socket.getInputStream();
 
 
                valBDD = is.read(); // ICI LE READ BLOQUANT, CE QUI M'EMPECHE D'EXECUTER LES INSTRUCTIONS SUIVANTES
 
                String message = "Valeur de vérification : "+ valBDD;
                Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
 
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
 
    View.OnClickListener buttonTesterRFIDOnClickListener = new View.OnClickListener(){
        @Override
        public void onClick(View arg0) {
            try{
                OutputStream out = socket.getOutputStream();
                out.write(3); // 3 = Lancement fct RFID
 
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }};
 
    View.OnClickListener buttonTesterVerrouOnClickListener = new View.OnClickListener(){
        @Override
        public void onClick(View arg0) {
 
            String message = "TEST Verrou";
            Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
            try{
                OutputStream out = socket.getOutputStream();
                out.write(4); // 4 = Lancement fct Verrou
 
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }};
 
    public class ClientTCP extends AsyncTask<Void, Void, String> {
        String dstAddress;
        int dstPort;
        int bytesRead;
 
        ClientTCP(String addr, int port){
            dstAddress = addr;
            dstPort = port;
        }
 
        @Override
        protected String doInBackground(Void... arg0) {
 
            bytesRead = 0;
            String message = "NC";
 
            try {
                socket = new Socket(dstAddress, dstPort);
 
                InputStream inputStream = socket.getInputStream();
                bytesRead = inputStream.read(); // Lecture du flag envoyé par le Serveur
 
                if (bytesRead == 1) {
 
                    /* AFFICHAGE DES BOUTONS de l'interface*/
 
                    return ("OK");
                }
            } catch (Exception e) {
                return ("Erreur BytesRead");
            }
            return message;
        }
 
       @Override
        protected void onPostExecute(String message) {
           super.onPostExecute(message);
 
           if(message == "OK") {
               message = "Connexion vers le serveur effectuée";
               Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
               messageErreur.setVisibility(View.GONE); // On enlève le message d'erreur
 
               ////////////////////////////////////////
 
               buttonTesterEcran.setVisibility(View.VISIBLE); // On affiche les boutons
               buttonTesterBDD.setVisibility(View.VISIBLE);
               buttonTesterRFID.setVisibility(View.VISIBLE);
               buttonTesterVerrou.setVisibility(View.VISIBLE);
           }
           else{
               Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
           }
       }
}}
Merci d'avance !