123 Eng

Engineering the engineers™


Latest Jobs   Forum Map

 


Home
Source Codes
Engineering Colleges

Training  Reports
Seminar Reports
Placement Papers

Forums

   Computer Science / IT
   Electronics
   Electrical
   Mechanical
   Chemical
   Civil

   CAT / MBA

   GMAT / Foreign MBA
Latest Jobs

Engineering Jobs / Technical Jobs
Management Jobs

Sitemap
Terms of use

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************************************/

 

Contribute content or training reports / feedback / Comments
job placement papers
All rights reserved © copyright 123ENG