Récupérer/envoyer des strings par socket
Bonjour,
je souhaite créer un programme "quiz" qui envoie des questions et réponses par socket, le serveur est en java et le client en android, à l'aide d'une AsyncTask j'arrive à me connecter au serveur et récupérer une chaîne de caractère envoyer par le serveur pour remplir automatiquement mes TextView ou RadioButton, mais j'arrive seulement à en récupérer une seule alors que je voudrais en récupérer plusieurs. Comment modifier ma fonction pour que j'arrive à prendre toutes les chaines de caractères envoyées ?
Voici mon code :
Coté serveur :
Code:
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
|
public class serveurtest {
public static void main(String[] args){
// Scanner sc = new Scanner(System.in);
int b = 0;
ServerSocket socketserver;
Socket socketduserveur ;
BufferedReader in = null ;
PrintWriter out;
String rep;
try {
socketserver = new ServerSocket(2009);
InetAddress address = InetAddress.getLocalHost();
String hostIP = address.getHostAddress() ;
String hostName = address.getHostName();
System.out.println( "Le nom de serveur est : " + hostName + "\nIP: " + hostIP);
System.out.println("Le serveur est à l'écoute du port "+socketserver.getLocalPort());
socketduserveur = socketserver.accept();
System.out.println("client connecté");
in = new BufferedReader(new InputStreamReader(socketduserveur.getInputStream()));
out = new PrintWriter(socketduserveur.getOutputStream());
out.println("Question");
out.flush();
out.println("Réponse 1");
out.flush();
out.println("Réponse 2");
out.flush();
out.println("Réponse 3");
out.flush();
out.println("Réponse 4");
out.flush();
rep = in.readLine();
socketduserveur.close();
socketserver.close();
}
catch (Exception e) {
e.printStackTrace();
System.out.println("erreur 1");
}
}
} |
Coté client :
Code:
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
|
public class main extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.qcm);
new ConnectionTask().execute();
}
class ConnectionTask extends AsyncTask<Void,Void,String>
{
public String doInBackground(Void...params)
{
String ret = null;
BufferedReader in = null;
PrintWriter out = null;
Socket socket =null ;
try {
socket = new Socket("192.168.10.104",2009); //adresse IP actuelle du serveur
in = new BufferedReader (new InputStreamReader (socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream());
out.println("coucou");
ret = in.readLine();
}
catch (Exception ex) {
// on utilise Log sous android !
Log.e("ConnectionTask","Failure !0",ex);
}
finally {
try {
if (out != null) out.close();
if (in != null) in.close();
socket.close();
} catch (Exception ex1) {
Log.e("ConnectionTask","Failure !1",ex1);
}
}
return ret;
}
// ici on est à nouveau dans le thread "UI" on a donc le droit de modifier celle-ci
public void onPostExecute(String result)
{
if (result != null) {
TextView tv = (TextView) main.this.findViewById(R.id.test);
tv.setText(result);
}
}
}
} |
et le xml, qcm.xml :
Code:
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
|
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RadioGroup
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkedButton="@+id/rep1"
android:orientation="vertical"
android:paddingTop="20dp" >
<RadioButton
android:id="@+id/rep1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RadioButton
android:id="@+id/rep2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RadioButton
android:id="@+id/rep3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RadioButton
android:id="@+id/rep4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RadioGroup>
<TextView
android:id="@+id/test"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#C60800"
android:textSize="20sp" />
</LinearLayout> |
Merci d'avance !