| Displaying  Source Code(s)  
 
 
          
            |  |  |  
            | 
              
                | Mulitthreaded chat application in java (Mini Project) 
 --------------------------------------------------------------------------------
 
 Description : This is the server and the client program thatI 
                wrote basically it gives u a good understanding of how sockets 
                work in java Author: Mohammed Alfaaz email:alfaaz@gmail.com
 
 Code :
 /*************Start program
 Server************************************************/
 /*This is the server for the MultiThreadedChatClient program 
                thatI
 wrote
 basically it
 gives u a good understanding of how sockets work in java
 Author: Mohammed Alfaaz
 email:alfaaz@gmail.com
 */
 import java.io.*;
 import java.net.*;
 
 public class MultiThreadChatServer{
 
 // Declaration section:
 // declare a server socket and a client socket for the server
 // declare an input and an output stream
 
 static Socket clientSocket = null;
 static ServerSocket serverSocket = null;
 
 // This chat server can accept up to 10 clients' connections
 
 static clientThread t[] = new clientThread[10];
 
 public static void main(String args[]) {
 
 // The default port
 
 int port_number=8888;
 
 if (args.length < 1)
 {
 System.out.println("Usage: java MultiThreadChatServer <BR>+
 "Now using port number="+port_number);
 } else {
 port_number=Integer.valueOf(args[0]).intValue();
 }
 
 // Initialization section:
 // Try to open a server socket on port port_number (default 
                8888)
 // Note that we can't choose a port less than 1023 if we are not
 // privileged users (root)
 
 try {
 serverSocket = new ServerSocket(port_number);
 }//try
 catch (IOException e)
 {System.out.println(e);}
 
 // Create a socket object from the ServerSocket to listen and 
                accept
 // connections.
 // Open input and output streams for this socket will be created 
                in
 // client's thread since every client is served by the server in
 // an individual thread
 
 //can use a for loop to control the number of clients
 //I have used the while so that we can have unlimited number of 
                clients
 while(true){
 try {
 clientSocket = serverSocket.accept();
 new clientThread(clientSocket,t).start();
 break;
 }//try
 
 catch (IOException e){
 System.out.println(e);}
 }
 }
 } //class
 
 // This client thread opens the input and the output streams for 
                a
 particular client,
 // ask the client's name, informs all the clients currently 
                connected
 to
 the
 // server about the fact that a new client has joined the chat 
                room,
 // and as long as it receive data, echos that data back to all 
                other
 clients.
 // When the client leaves the chat room this thread informs also 
                all
 the
 // clients about that and terminates.
 
 class clientThread extends Thread{
 
 DataInputStream is = null;
 PrintStream os = null;
 Socket clientSocket = null;
 clientThread t[];
 
 public clientThread(Socket clientSocket, clientThread[] t){
 this.clientSocket=clientSocket;
 this.t=t;
 }
 
 public void run()
 {
 String line;
 String name;
 try{
 is = new DataInputStream(clientSocket.getInputStream());
 os = new PrintStream(clientSocket.getOutputStream());
 os.println("Enter your name.");
 name = is.readLine();
 os.println("Hello "+name+" to our chat room.
 To leave enter /quit
 in
 a new line");
 for(int i=0; i<=9; i++)
 if (t[i]!=null && t[i]!=this)
 t[i].os.println("*** A new user "+name+" entered the chat room
 !!!
 ***" );
 while (true) {
 line = is.readLine();
 if(line.startsWith("/quit")) break;
 for(int i=0; i<=9; i++)
 if (t[i]!=null) t[i].os.println("<"+name+"> "+line);
 }
 for(int i=0; i<=9; i++)
 if (t[i]!=null && t[i]!=this)
 t[i].os.println("*** The user "+name+" is leaving the chat room
 !!!
 ***" );
 
 os.println("*** Bye "+name+" ***");
 
 // Clean up:
 // Set to null the current thread variable such that other 
                client
 could
 // be accepted by the server
 
 for(int i=0; i<=9; i++)
 if (t[i]==this) t[i]=null;
 
 // close the output stream
 // close the input stream
 // close the socket
 
 is.close();
 os.close();
 clientSocket.close();
 }
 catch(IOException e){};
 }
 }
 
 /*************End program
 Server************************************************/
 
 
 
 
 /***********************Start Client
 program************************************/
 
 /*This is the client for the MultiThreadedChatServer program 
                thatI
 wrote
 basically it
 gives u a good understanding of how sockets work in java
 Author: Mohammed Alfaaz
 email:alfaaz@gmail.com
 
 */
 
 import java.io.*;
 import java.net.*;
 
 public class MultiThreadChatClient implements Runnable{
 
 // Declaration section
 // clientClient: the client socket
 // os: the output stream
 // is: the input stream
 
 static Socket clientSocket = null;
 static PrintStream os = null;
 static DataInputStream is = null;
 static BufferedReader inputLine = null;
 static boolean closed = false;
 
 public static void main(String[] args) {
 
 // The default port
 
 int port_number=8888;
 String host="localhost";
 
 if (args.length < 2)
 {
 System.out.println("Usage: java MultiThreadChatClient <BR>+
 "Now using host="+host+", port_number="+port_number);
 } else {
 host=args[0];
 port_number=Integer.valueOf(args[1]).intValue();
 }
 // Initialization section:
 // Try to open a socket on a given host and port
 // Try to open input and output streams
 try {
 clientSocket = new Socket(host, port_number);
 inputLine = new BufferedReader(new
 InputStreamReader(System.in));
 os = new PrintStream(clientSocket.getOutputStream());
 is = new DataInputStream(clientSocket.getInputStream());
 } catch (UnknownHostException e) {
 System.err.println("Don't know about host "+host);
 } catch (IOException e) {
 System.err.println("Couldn't get I/O for the connection to
 the
 host "+host);
 }
 
 // If everything has been initialized then we want to write some 
                data
 // to the socket we have opened a connection to on port 
                port_number
 
 if (clientSocket != null && os != null && is != null) {
 try {
 
 // Create a thread to read from the server
 
 new Thread(new MultiThreadChatClient()).start();
 
 while (!closed) {
 os.println(inputLine.readLine());
 }
 
 // Clean up:
 // close the output stream
 // close the input stream
 // close the socket
 
 os.close();
 is.close();
 clientSocket.close();
 } catch (IOException e) {
 System.err.println("IOException: " + e);
 }
 }
 }
 
 public void run() {
 String responseLine;
 
 // Keep on reading from the socket till we receive the "Bye" 
                from the
 server,
 // once we received that then we want to break.
 try{
 while ((responseLine = is.readLine()) != null) {
 System.out.println(responseLine);
 if (responseLine.indexOf("*** Bye") != -1) break;
 }
 closed=true;
 } catch (IOException e) {
 System.err.println("IOException: " + e);
 }
 }
 }
 
 /***********************End Client
 program************************************/
 |  |  |