Socket, problème pour changer mes view
Bonjour,
j'essaye de développer un Quiz en Android, j'ai une partie serveur en java qui contient les questions/réponses et une partie client en java android, qui récupère les questions et les affichent puis renvoie la réponse au serveur. Or je n'arrive pas a envoyer de string du client vers le serveur.
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 46
|
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("rep1");
out.flush();
out.println("rep2");
out.flush();
out.println("rep3");
out.flush();
out.println("rep4");
out.flush();
System.out.println(in.readLine());
}
catch (Exception e) {
e.printStackTrace();
System.out.println("erreur 1");
}
}
} |
ConnectionActivity activité qui permet de rentrer l'adresse de connection :
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
|
public class ConnectionActivity extends Activity {
private Button b = null;
private EditText e = null;
public String adresse;
Thread t1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.connection);
e = (EditText) findViewById(R.id.adresse);
b = (Button) findViewById(R.id.boutonconnection);
b.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//on récupère l'adresse entrée par l'utilisateur
adresse = e.getText().toString();
//on lance le thread qui permet connect
t1 = new Thread(new connect(adresse));
t1.start();
//On lance l'activité QCM qui affiche les questions/réponses du serveur
Intent intent = new Intent(ConnectionActivity.this, QCM.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.connection, menu);
return true;
}
} |
connect : Thread qui gère la connection
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
|
public class connect implements Runnable {
private String adresse;
public static ArrayList<String> ret = new ArrayList<String>();
public static PrintWriter out;
public connect(String adresse){
this.adresse = adresse;
}
@Override
public void run() {
try {
Socket socket = new Socket(adresse,2009); //adresse IP actuelle du serveur
BufferedReader in = new BufferedReader (new InputStreamReader (socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream());
out.println("Connection établie"); //Cette string ne s'affiche pas sur le serveur, je ne comprends pas
//On lit et stocke les strings questions et réponses du serveur
for(int i = 0 ; i<5 ; i++){
ret.add(in.readLine());
}
}
catch (Exception ex) {
Log.e("ConnectionTask","Failure !0",ex);
}
}
} |
et enfin qcm qui gère l'affichage des questions :
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
|
public class QCM extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.qcm);
//On remplit les view par les questions réponses
TextView tv = (TextView) findViewById(R.id.question_numero);
tv.setText(connect.ret.get(0));
Button bt1 = (Button) findViewById(R.id.bt1);
bt1.setText(connect.ret.get(1));
Button bt2 = (Button) findViewById(R.id.bt2);
bt2.setText(connect.ret.get(2));
Button bt3 = (Button) findViewById(R.id.bt3);
bt3.setText(connect.ret.get(3));
Button bt4 = (Button) findViewById(R.id.bt4);
bt4.setText(connect.ret.get(4));
bt4.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
connect.out.println("TESTTEST");
}
});
}
} |
Merci de votre aide :)