Hi all,
I am in a great problem. I am trying to implement a multithreaded server using java, first look at the code...
this server creates a thread when a client wants to establish a connection with it, the thread manage all things for that client, so I named this thread as "worker", here comes the code for worker...
and I have three clients, client1.java, client2.java and client3.java
they are...
the problem is, that, when start client1, the thread1 from the server starts to serve this client, and when I start another client client2, this thread does not start, until client1 and thread1 get finished. Same thing happens when I start 3 threads simultaneously, but the server and the workers supposed to serve all the clients at the same time, but it is working on "first come first serve" basis.
What will I do?........
I need concurrent workers!!!!
I am in a great problem. I am trying to implement a multithreaded server using java, first look at the code...
Code:
/*------- Main Server (server.java)--------------*/ import java.io.* ; import java.net.* ; public class server { public static void main(String args[]) throws IOException { ServerSocket s = new ServerSocket(1234); while(true) { Socket s1 = s.accept(); worker w = new worker(s1); w.run(); } //s.close(); } }
Code:
/*--------- worker (worker.java) -------------*/ import java.io.* ; import java.net.* ; public class worker implements Runnable { private DataInputStream datain; public worker(Socket s) throws IOException { InputStream in = s.getInputStream(); datain = new DataInputStream(in); } public void run() { try{ while(true) { String st = new String(datain.readUTF()); System.out.println(st); } } catch(IOException ioe) { System.out.println(ioe); } } }
they are...
Code:
/*---------- client1.java ----------------*/ import java.io.* ; import java.net.* ; public class client1 { public static void main(String args[]) throws IOException { Socket s = new Socket("localhost", 1234); OutputStream out = s.getOutputStream(); DataOutputStream dataout = new DataOutputStream(out); try{ while(true) { Thread.sleep(1000); dataout.writeUTF("client1"); System.out.println("client1"); } } catch(InterruptedException ie) { System.out.println(ie); } //dataout.close(); //out.close(); //s.close(); } } /*----------- client2.java-------------- */ import java.io.* ; import java.net.* ; public class client2 { public static void main(String args[]) throws IOException { Socket s = new Socket("localhost", 1234); OutputStream out = s.getOutputStream(); DataOutputStream dataout = new DataOutputStream(out); while(true) { dataout.writeUTF("client2"); System.out.println("client2"); } //dataout.close(); //out.close(); //s.close(); } } /*--------------- client3.java ------------*/ import java.io.* ; import java.net.* ; public class client3 { public static void main(String args[]) throws IOException { Socket s = new Socket("localhost", 1234); OutputStream out = s.getOutputStream(); DataOutputStream dataout = new DataOutputStream(out); try{ while(true) { Thread.sleep(2000); dataout.writeUTF("client3"); System.out.println("client3"); } } catch(InterruptedException ie) { System.out.println(ie); } //dataout.close(); //out.close(); //s.close(); } }
What will I do?........
I need concurrent workers!!!!
Comment