Serveur java multithreaded Socket

cs_aymoun11 Messages postés 9 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 12 septembre 2008 - 8 sept. 2008 à 15:15
sheorogath Messages postés 2448 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é

6 réponses

indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
8 sept. 2008 à 15:47
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
0
cs_aymoun11 Messages postés 9 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 12 septembre 2008
8 sept. 2008 à 15:59
voici l'exception qui est affichée lors de l'exécution:
 Caught java.io.StreamCorruptedException: invalid stream header - closing thread
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
8 sept. 2008 à 16:55
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"
0
cs_aymoun11 Messages postés 9 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 12 septembre 2008
8 sept. 2008 à 17:32
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);
  }
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aymoun11 Messages postés 9 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 12 septembre 2008
9 sept. 2008 à 10:19
J'attends toujours a votre aide.
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
9 sept. 2008 à 12:22
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"
0
Rejoignez-nous