java - My multi threaded server is not working -


hi trying make multi threaded server client app server resends upper cased version of string sent client, here 3 classes:

the server class:

package q2;  import java.net.*;  import java.io.*;   public class server {      public static void main(string[] args) throws ioexception {           serversocket serversocket = null;           try {              serversocket = new serversocket(10118);          }          catch (ioexception e)          {              system.err.println("on ne peut pas écouter au  port: 10118.");              system.exit(1);          }           //socket clientsocket = null;          system.out.println ("le serveur est en marche, attente de la connexion.....");          try {             multith mt = new multith(serversocket.accept());             thread t = new thread(mt);             t.start();             //clientsocket = serversocket.accept();          }          catch (ioexception e)          {              system.err.println("accept échoué.");              system.exit(1);          }           system.out.println ("connexion réussie");         system.out.println ("attente de l'entrée.....");       }  }  

the client class:

package q2;  import java.io.*; import java.net.*;  public class client { public static void main(string[] args) throws ioexception {      string serverhostname = new string ("127.0.0.1");      if (args.length > 0)         serverhostname = args[0];     system.out.println ("essai de se connecter à l'hôte " +     serverhostname + " au port 10118.");      socket echosocket = null;     printwriter out = null;     bufferedreader in = null;      try {         echosocket = new socket(serverhostname, 10118);         out = new printwriter(echosocket.getoutputstream(), true);         in = new bufferedreader(new inputstreamreader(echosocket.getinputstream()));     } catch (unknownhostexception e) {         system.err.println("hôte inconnu: " + serverhostname);         system.exit(1);     } catch (ioexception e) {         e.printstacktrace();         //system.err.println("ne pas se connecter au serveur: " + serverhostname);         system.exit(1);     }      bufferedreader stdin = new bufferedreader(new inputstreamreader(system.in));     string userinput;     system.out.print ("entrée: ");     while ((userinput = stdin.readline()) != null) {         out.println(userinput);         system.out.println("echo: " + in.readline());         system.out.print ("entrée: ");     }      out.close();     in.close();     stdin.close();     echosocket.close(); } } 

and intermediate class implements runnable interface:

package q2;  import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstreamreader; import java.io.printwriter; import java.net.*;  public class multith implements runnable    {  private socket soc; public multith(socket s){     this.soc = s; } public void run() {     printwriter out = null;      bufferedreader in = null;     try{         out = new printwriter(soc.getoutputstream(), true);         in = new bufferedreader(new inputstreamreader( soc.getinputstream()));          string inputline;           while ((inputline = in.readline()) != null)          {              system.out.println ("serveur: " + inputline);             inputline = inputline.touppercase();             out.println(inputline);             if (inputline.equals("bye."))                  break;            }         out.close();         in.close();         //soc.close();     } catch (ioexception e1) {         // todo auto-generated catch block         e1.printstacktrace();     }       } } 

now can open many client server accepts , resends string of first one.

issue program accept 1 connection , dies. need wait on serversocket.accept() method , client make connection accept return socket. can pass socket different thread complete read/write operation. main thread can go block on accept().

try {        while(true) //replace exit condition....exit condition server not client.        {          socket s = serversocket.accept();         multith mt = new multith(s);         thread t = new thread(mt);         t.start();         //clientsocket = serversocket.accept();         }      }      catch (ioexception e)      {          system.err.println("accept échoué.");          system.exit(1);      }  

Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -