Bonjour

Je suis en train d'essayer de développer un client TCP Android pour piloter un appli QT. J'ai mis au point un serveur QT. Il doit envoyer des trames TCP mais également en recevoir du client.

Actuellement j'arrive sur mon terminal Android :
- à me connecter
- à envoyer une commande vers mon serveur.

Par contre j'aimerais recevoir des infos du serveur et là je ne sais pas comment faire.
J'ai essayé de démarrer un thread de lecture mais cela ne fonctionne pas.

Je vous joins le code qui fonctionne actuellement.

Est ce que quelqu'un pourrai me donner une piste de réflexion, ou du code pour mon besoin.

Merci de votre aide

VPM

Voici mon code
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
 
 
import java.io.BufferedWriter;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
 
 
 
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
public class TestwifiActivity extends Activity
{
	private TextView textview_receivedmessage;
	private TextView textview_sendmessage;
	private TextView textview_ipaddress;
	private TextView textview_portaddress;
	private Button but_sendmessage;
	private Button but_okconnexion;
 
	private String IP_address;
	private int IP_port;
	private String MessageToSend;
	private Thread cThread;
 
	private boolean connected = false;
 
	private Socket socket;
 
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		textview_receivedmessage = (TextView)findViewById(R.id.textE_ReceivedMessage);
		textview_sendmessage = (TextView)findViewById(R.id.textE_SendMessage);
		textview_ipaddress = (TextView)findViewById(R.id.textE_IpAddress);
		textview_portaddress = (TextView)findViewById(R.id.textE_PortAddress);
		but_sendmessage = (Button)findViewById(R.id.btn_Send);
		but_okconnexion = (Button)findViewById(R.id.btn_OkConnexion);
 
		textview_ipaddress.setText("192.168.20.25");
		textview_portaddress.setText(String.valueOf(2600));
		textview_sendmessage.setText("Hello from Android");
 
 
		but_okconnexion.setOnClickListener( new View.OnClickListener() {  
			 @Override
	     	   public void onClick(View v) { 
 
 
				 IP_address = textview_ipaddress.getText().toString();
				 IP_port = Integer.parseInt(textview_portaddress.getText().toString());
				 connectSocket();
			 }
		 });
 
		but_sendmessage.setOnClickListener( new View.OnClickListener() {  
	     	   @Override
	     	   public void onClick(View v) {   
	     		  try 
	     			{  
 
	     				PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
						MessageToSend = textview_sendmessage.getText().toString();
						out.println(MessageToSend);
	     			}
	     			catch (UnknownHostException e) 
	     			{
	     				// TODO Auto-generated catch block
	     				Log.e("TCP", "C: UnknownHostException", e);
	     				e.printStackTrace();
	     			}
	     			catch (IOException e) 
	     			{
	     				// TODO Auto-generated catch block
	     				Log.e("TCP", "C: IOException", e);
	     				e.printStackTrace();
	     			}
	     	   }
	     	  });
 
 
	}
 
 
 
 
	private void connectSocket()
	{
		// TODO Auto-generated method stub
		try 
		{
				InetAddress serverAddr = InetAddress.getByName(IP_address);
				Log.d("TCP", "C: Connecting...");
				socket = new Socket(serverAddr, IP_port);
				String message = "Hello from Client android emulator";
				try
				{
					Log.d("TCP", "C: Sending: '" + message + "'");
					PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
					BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
 
 
					out.println(message);
 
					Log.d("TCP", "C: Sent.");
					Log.d("TCP", "C: Done.");
 
 
				}
				catch(Exception e)
				{
					Log.e("TCP", "S: Error", e);
				}
 
			}
		catch (UnknownHostException e) 
		{
			// TODO Auto-generated catch block
			Log.e("TCP", "C: UnknownHostException", e);
			e.printStackTrace();
		}
		catch (IOException e) 
		{
			// TODO Auto-generated catch block
			Log.e("TCP", "C: IOException", e);
			e.printStackTrace();
		}
	}