-
-
- - -
-
-
-

Java Examples - Multithreaded Server

-
-
-
Advertisements
- - -
-
- - -
-
-

Problem Description

-

How to create a multithreaded server ?

-

Solution

-

Following example demonstrates how to create a multithreaded server by using ssock.accept() method of Socket class and MultiThreadServer(socketname) method of ServerSocket class.

-
-import java.io.IOException;
-import java.io.PrintStream;
-import java.net.ServerSocket;
-import java.net.Socket;
-
-public class MultiThreadServer implements Runnable {
-   Socket csocket;
-   MultiThreadServer(Socket csocket) {
-      this.csocket = csocket;
-   }
-   public static void main(String args[]) throws Exception { 
-      ServerSocket ssock = new ServerSocket(1234);
-      System.out.println("Listening");
-      
-      while (true) {
-         Socket sock = ssock.accept();
-         System.out.println("Connected");
-         new Thread(new MultiThreadServer(sock)).start();
-      }
-   }
-   public void run() {
-      try {
-         PrintStream pstream = new PrintStream(csocket.getOutputStream());
-         for (int i = 100; i >= 0; i--) {
-            pstream.println(i + " bottles of beer on the wall");
-         }
-         pstream.close();
-         csocket.close();
-      } catch (IOException e) {
-         System.out.println(e);
-      }
-   }
-}
-
-

Result

-

The above code sample will produce the following result.

-
-Listening
-Connected
-
-

Following is an another example of how to create a multithreaded server.

-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
- 
-public class NewClass {
-   ServerSocket myServerSocket;
-   boolean ServerOn = true;
-   public NewClass() { 
-      try {
-         myServerSocket = new ServerSocket(8888);
-      } catch(IOException ioe) { 
-         System.out.println("Could not create server socket on port 8888. Quitting.");
-         System.exit(-1);
-      } 
-		
-      Calendar now = Calendar.getInstance();
-      SimpleDateFormat formatter = new SimpleDateFormat(
-         "E yyyy.MM.dd 'at' hh:mm:ss a zzz");
-      System.out.println("It is now : " + formatter.format(now.getTime()));
-      
-      while(ServerOn) { 
-         try { 
-            Socket clientSocket = myServerSocket.accept();
-            ClientServiceThread cliThread = new ClientServiceThread(clientSocket);
-            cliThread.start(); 
-         } catch(IOException ioe) { 
-            System.out.println("Exception found on accept. Ignoring. Stack Trace :"); 
-            ioe.printStackTrace(); 
-         }  
-      } 
-      try { 
-         myServerSocket.close(); 
-         System.out.println("Server Stopped"); 
-      } catch(Exception ioe) { 
-         System.out.println("Error Found stopping server socket"); 
-         System.exit(-1); 
-      } 
-   }
-	
-   public static void main (String[] args) { 
-      new NewClass();        
-   } 
-	
-   class ClientServiceThread extends Thread { 
-      Socket myClientSocket;
-      boolean m_bRunThread = true; 
-      public ClientServiceThread() { 
-         super(); 
-      } 
-		
-      ClientServiceThread(Socket s) { 
-         myClientSocket = s; 
-      } 
-		
-      public void run() { 
-         BufferedReader in = null; 
-         PrintWriter out = null; 
-         System.out.println(
-            "Accepted Client Address - " + myClientSocket.getInetAddress().getHostName());
-         try { 
-            in = new BufferedReader(
-               new InputStreamReader(myClientSocket.getInputStream()));
-            out = new PrintWriter(
-               new OutputStreamWriter(myClientSocket.getOutputStream()));
-            
-            while(m_bRunThread) { 
-               String clientCommand = in.readLine(); 
-               System.out.println("Client Says :" + clientCommand);
-               
-               if(!ServerOn) { 
-                  System.out.print("Server has already stopped"); 
-                  out.println("Server has already stopped"); 
-                  out.flush(); 
-                  m_bRunThread = false;
-               } 
-               if(clientCommand.equalsIgnoreCase("quit")) {
-                  m_bRunThread = false;
-                  System.out.print("Stopping client thread for client : ");
-               } else if(clientCommand.equalsIgnoreCase("end")) {
-                  m_bRunThread = false;
-                  System.out.print("Stopping client thread for client : ");
-                  ServerOn = false;
-               } else {
-                  out.println("Server Says : " + clientCommand);
-                  out.flush(); 
-               } 
-            } 
-         } catch(Exception e) { 
-            e.printStackTrace(); 
-         } 
-         finally { 
-            try { 
-               in.close(); 
-               out.close(); 
-               myClientSocket.close(); 
-               System.out.println("...Stopped"); 
-            } catch(IOException ioe) { 
-               ioe.printStackTrace(); 
-            } 
-         } 
-      } 
-   } 
-}
-
-
- - - -
java_networking.htm
-
- -
-
Advertisements
- - -
-
-
-
-
- -
- - -
-
- - -
-
- - -
-
-
-
-
-
- - -