Bonjour,
Je me tourne vers vous car j'ai fait un petit programme qui se contente juste de récupérer des données envoyées par un serveur.
Le client sur l'appareil android n'est chargé que d'afficher ce qu'il reçoit du serveur.
Mon problème est que le client ne voit les messages envoyés au serveur que quand le serveur se déconnecte.
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 public class SlimpleTextClientActivity extends Activity { private TextView textView; private Socket client; private PrintWriter printwriter; private BufferedReader bufferedReader; //Following is the IP address of the chat server. You can change this IP address according to your configuration. // I have localhost IP address for Android emulator. private String CHAT_SERVER_IP = "192.168.2.2"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_slimple_text_client); textView = (TextView) findViewById(R.id.textView1); ChatOperator chatOperator = new ChatOperator(); chatOperator.execute(); } /** * This AsyncTask create the connection with the server and initialize the * chat senders and receivers. */ private class ChatOperator extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... arg0) { try { client = new Socket(CHAT_SERVER_IP, 6666); // Creating the server socket. if (client != null) { printwriter = new PrintWriter(client.getOutputStream(), true); InputStreamReader inputStreamReader = new InputStreamReader(client.getInputStream()); bufferedReader = new BufferedReader(inputStreamReader); } else { System.out.println("Server has not bean started on port 4444."); } } catch (UnknownHostException e) { System.out.println("Faild to connect server " + CHAT_SERVER_IP); e.printStackTrace(); } catch (IOException e) { System.out.println("Faild to connect server " + CHAT_SERVER_IP); e.printStackTrace(); } return null; } /** * Following method is executed at the end of doInBackground method. */ @Override protected void onPostExecute(Void result) { Receiver receiver = new Receiver(); // Initialize chat receiver AsyncTask. receiver.execute(); } } /** * This AsyncTask continuously reads the input buffer and show the chat * message if a message is availble. */ private class Receiver extends AsyncTask<Void, Void, Void> { private String message; @Override protected Void doInBackground(Void... params) { while (true) { try { if (bufferedReader.ready()) { message = bufferedReader.readLine(); publishProgress(null); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { Thread.sleep(500); } catch (InterruptedException ie) { } } } @Override protected void onProgressUpdate(Void... values) { textView.append( message + "\n"); } } }
Je m'explique, j'envois des messages du serveur, rien ne se passe sur mon UI, une fois que je déconnecte le servuer (proprement ou pas) la file des messages reçus par l'appareil s'affiche sur L'interface.
Je n'arrive pas à comprendre pourquoi l'UI ne se met pas à jour..
C'est vraiment rageant parce que le client reçoit les messages.
Si quelqu'un a une idée je suis preneur !
Simon
Partager