Bonjour,
Etant donné que ça fait un moment que je n'ai plus fait d'appli Java pour mon compte, j'ai décidé de me lancer dans un petit logiciel client/serveur à usage personnel.
Cependant j'ai un problème qui est très probablement tres simple mais que j'arrive pas a resoudre .
Le code de mon petit serveur
Code :
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.net.InetAddress;
- import java.io.IOException;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.io.InputStream;
- public class Listener {
- public static void main(String[] args) {
- if (args[0].equals("start" )) {
- try {
- ServerSocket ss;
- Socket s;
- ss = new ServerSocket(7777, 0, InetAddress.getLocalHost());
- String st;
- while (true) {
- s = ss.accept();
- s.setKeepAlive(true);
- InputStream is = s.getInputStream();
- BufferedReader br = new BufferedReader(new InputStreamReader(is));
- st = br.readLine();
- if (st != null) {
- System.out.println(st);
- } else {
- System.out.println("Waiting" );
- }
- }
- } catch (IOException e) {
- System.out.println("Erreur d'initialisation" );
- }
- }
- }
- }
|
Le problème se situe au niveau du readline. Quand un client se connecte et envoie qqch en utilisant :
Code :
- Socket s = new Socket(paramsConnection.getServer(), paramsConnection.getPort());
- OutputStream os = s.getOutputStream();
- OutputStreamWriter ow = new OutputStreamWriter(os);
- ow.write("d: Data" );
- ow.flush();
|
Le serveur detecte la connection (il passe outre le accept) mais arrivé au readline il bloque et attend quelquechose.
Que dois-je faire? J'ai pensé à separer ça en plusieurs threads mais je vois pas tres bien ce que ça m'apporterais d'avoir un thread qui attend je ne sais quoi pendant que celui principal revient au ss.accept();
Je m'excuse d'avance pour la nature extrement simple de la question, mais tout les exemples que j'ai pu voir sur le net utilisent un systeme proche du mien, donc je comprend pas pourquoi le mien bloque.
Merci d'avance
---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait