Bonjour a tous,
Je débute avec les sockets et rencontre un problème, voici ma classe (j'explique le probleme en suite)
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
 
public class Fragment_message extends Fragment {
    private View rootView;
    private TextView text;
    private Socket clientSocket;
    private ServerSocket serverSocket;
    private PrintWriter printWriter;
    private BufferedReader in;
    private EditText edt;
    public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        rootView = inflater.inflate(R.layout.layout_message,container,false);
        text = (TextView)rootView.findViewById(R.id.tvMsg);
        Button b = (Button)rootView.findViewById(R.id.Benvoi);
        edt = (EditText)rootView.findViewById(R.id.editText);
        text.setText("tete de lort");
        clientSocket = null;
        serverSocket = null;
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Client cl = new Client();
                cl.execute();
            }
        });
 
        return rootView;
    }
 
    public class Client extends AsyncTask<Void,Void,Void>{
 
        @Override
        protected Void doInBackground(Void... params) {
            try {
 
                InetAddress serverAddr = InetAddress.getByName("192.168.2.16");
                String msg = edt.getText().toString();
                clientSocket = new Socket(serverAddr, 4444);
                printWriter = new PrintWriter(clientSocket.getOutputStream());
                printWriter.write(msg);
                printWriter.flush();
                printWriter.close();
                in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                String rep = in.readLine();
                Log.i("reponse server", "ok");
                //clientSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
 
            return null;
        }
    }
}
Donc lorsque j'appuie sur mon bouton, on lance une instance d'asynctask, mon socket et créé et mon message est bien envoyé au serveur. Sur le serveur je demande a ce qu'il renvoi "msg recu". Cependant mon printWriter.close() ferme mon socket. Si je commente toute la partie printwriter je recois bien "msg recu". SI je commente juste printWriter.close() mon message ne part pas ou du moins se bloque quelques part car en décommentant la ligne et relançant le programme mon serveur m'affiche bien le message précédemment saisie. (Je ne suis pas sur d'etre trés clair).

Comment donc procéder pour que une fois le message envoyé au serveur je puisse recevoir la réponse sur le client ?

Merci.