Serveur java multithreaded Socket

Messages postés
9
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
12 septembre 2008
- - Dernière réponse : sheorogath
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
- 9 sept. 2008 à 12:22
je suis entrain de développer un serveur java qui accepte des message dans des des buffer envoyé par des différent client ,
le probléme que je trouve que lors de l'exécution de code il m'envoie direct au catch de système voici le code de run():
try {
ObjectOutputStream out = new ObjectOutputStream(
socket.getOutputStream());
ObjectInputStream in = new ObjectInputStream(
socket.getInputStream());
BufferedReader plec = new BufferedReader(
new InputStreamReader(in)
);
while(true) {
String C=plec.readLine();
System.out.println(C);
}
} catch(Throwable t) {
System.out.println("Caught " + t + " - closing thread");
}
}
et moi je cherche a récupéré des message de différent client et les affiché
Afficher la suite 

6 réponses

Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
18
0
Merci
Salut,
pourrais-tu nous nous donner l'exception levée lors de l'éxecution de ton programme s'il te plait

Merci d'avance

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
Commenter la réponse de indiana_jules
Messages postés
9
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
12 septembre 2008
0
Merci
voici l'exception qui est affichée lors de l'exécution:
 Caught java.io.StreamCorruptedException: invalid stream header - closing thread
Commenter la réponse de cs_aymoun11
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
11
0
Merci
mets plus de code
genre le code ou il ya le SocketServer

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Commenter la réponse de sheorogath
Messages postés
9
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
12 septembre 2008
0
Merci
ok
voici tout le code:

    public class Server {
  public static final int PORT = 4444;
  public Server(int port) throws IOException {
    ServerSocket ss = new ServerSocket(port);
    while(true) {
      new ServerThread(ss.accept());
    }
  }
  private class ServerThread extends Thread {
    private final Socket socket;
    public ServerThread(Socket socket) {
      this.socket = socket;
      start();
    }
    public void run() {
      try {
        ObjectOutputStream out = new ObjectOutputStream(
          socket.getOutputStream());
        ObjectInputStream in = new ObjectInputStream(
          socket.getInputStream());
         BufferedReader plec = new BufferedReader(
                               new InputStreamReader(in)
                              );
        while(true) {
         String C=plec.readLine();
System.out.println(C);
out.flush();
out.reset();
        }
      } catch(Throwable t) {
        System.out.println("Caught " + t + " - closing thread");
      }
    }
  }
  public static void main(String[] args) throws IOException {
     
    new Server(PORT);
  }
}
Commenter la réponse de cs_aymoun11
Messages postés
9
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
12 septembre 2008
0
Merci
J'attends toujours a votre aide.
Commenter la réponse de cs_aymoun11
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
11
0
Merci
on est accessoirement occupe aussi de nos cotes ...

Moi j'aurais fait un truc du genre :

while(true) {
      new ServerThread(ss.accept()).start();
    }
 
private class ServerThread extends Thread {
    private Socket socket;
    private ObjectOutputStream out;
    private ObjectInputStream in;
    private BufferedReader plec;

    public ServerThread(Socket socket) {
        this.socket = socket;
        this.out = new ObjectOutputStream(
            socket.getOutputStream());
        this.in = new ObjectInputStream(
            socket.getInputStream());
        this.plec = new BufferedReader(
            new InputStreamReader(in));
    }
    public void run() {
        try {
            while(true) {
                String C = this.plec.readLine();
                System.out.println(C);
                this.out.flush();
                this.out.reset();
            }
        } catch(Throwable t) {
            System.out.println("Caught " + t + " - closing thread");
        }
    }
}

Je te laisse rassembler le tout...
genre tu vois le final dans le socket je l'ai pas vu de suite mais c'est une erreur...
tu peux declarer une variable final lorsque tu l'initialise a la declaration sauf erreur de ma part

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Commenter la réponse de sheorogath