skip to main | skip to sidebar

Java Programs and Examples with Output

Pages

▼
 
  • RSS
  • Twitter
Wednesday, October 24, 2012

Chat Client and Chat Server

Posted by Raju Gupta at 2:26 AM – 0 comments
 
Communication between the clients from Server

//Chat Server:-

import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class ChatServer extends Frame implements ActionListener{
 Label listOfClients;
 List clientName;
 Button exit;
 Panel p1,p2;
 ServerSocket ss;
 Clients clients[];
 int n;
 boolean sendOk=true;
 boolean update=false;

 ChatServer(){
  super("ChatServer");
  setSize(400,300);
  setVisible(true);
  clientName=new List();
  listOfClients=new Label("List of Clients");
  exit=new Button("Exit");
  p1=new Panel();
  p2=new Panel();
  p1.setLayout(new FlowLayout());
  p2.setLayout(new FlowLayout());
  setLayout(new GridLayout(2,1));
  add(p1);
  add(p2);
  p1.add(listOfClients);
  p1.add(clientName);
  p2.add(exit);
  exit.addActionListener(this);
  try{
   ss=new ServerSocket(2500);
  }catch(Exception e){
  }
  clients=new Clients[50];
  n=0;
  new CheckNewClients().start();
  new UpdateClients().start();
  
 }
 public void actionPerformed(ActionEvent ae){
  System.exit(0);
 }
 public static void main(String args[]){
  new ChatServer();
 }
 class Clients extends Thread{
  Socket s;
  BufferedReader br;
  PrintWriter pw;
  String name="Client ";
  int i;
  boolean alive;
  public void run(){
   try{
    while(true){
     String temp=br.readLine();
     if(temp.equals("shutdown")){
      for(int x=0;x<clientName.getItemCount();x++)
       if(clientName.getItem(x).equals(name)){
        clientName.remove(x);
        break;
       }
      alive=false;
      update=true;
      break;
     }
     else if(temp.equals("msg")){
      String client=br.readLine(); 
      String msg=br.readLine();
      int x;
      for(x=0;x<n;x++)
       if(clients[x].name.equals(client))
        break;
      while(!sendOk);
      sendOk=false;
      clients[x].pw.println("msg");
      clients[x].pw.println(name+" : "+msg);
      sendOk=true;
     }
    }
   }catch(Exception e){ 
    for(int x=0;x<clientName.getItemCount();x++)
     if(clientName.getItem(x).equals(name)){
      clientName.remove(x);
      break;
     }
    alive=false;
    update=true;
   }
  }
 }
 class CheckNewClients extends Thread{
  public void run(){
   while(true){
    clients[n]=new Clients();
    try{
     clients[n].s=ss.accept(); 
     clients[n].br=new BufferedReader(new InputStreamReader(clients[n].s.getInputStream()));
     clients[n].pw=new PrintWriter(clients[n].s.getOutputStream(),true);
     clients[n].i=n;
     clients[n].name+=n;
     clients[n].alive=true;
     clientName.add(clients[n].name);
     clients[n].pw.println(clients[n].name);
     clients[n].start(); 
     update=true;
    }catch(Exception e){
     System.out.println(e);
    }
    n++;
   }
  }
 }
 class UpdateClients extends Thread{
  public void run(){
   while(true){
    while(!update);
    for(int i=0;i<n;i++){
     int count=clientName.getItemCount();
     if(!clients[i].alive)
      continue;
     try{
      while(!sendOk);
      sendOk=false;
      clients[i].pw.println("update");
      clients[i].pw.println(count-1);
      for(int x=0;x<count;x++)
       if(!clientName.getItem(x).equals(clients[i].name))
        clients[i].pw.println(clientName.getItem(x));
      sendOk=true;
     }catch(Exception e){
      System.out.println(e);
     }
    }
    update=false;
   }
  }
 }
}


//Chat Client:-

import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class ChatClient extends Frame implements ActionListener{
 Label enterMessage,to,receivedMessages,sentMessages;
 TextField enterMessaget;
 TextArea receivedMessagest,sentMessagest;
 Button send,exit;
 Choice clientName;
 Panel p1,p2,p3,p4;
 Socket s;
 PrintWriter pw;
 BufferedReader br;

 ChatClient(){
  super("ChatClient");
  setVisible(true);
  setSize(500,300);
  enterMessage=new Label("Enter Message");
  to=new Label("To");
  receivedMessages=new Label("Received Messages");
  sentMessages=new Label("Sent Messages");
  enterMessaget=new TextField();
  receivedMessagest=new TextArea("",20,5,TextArea.SCROLLBARS_VERTICAL_ONLY);
  sentMessagest=new TextArea();
  clientName=new Choice();
  send=new Button("Send");
  exit=new Button("Exit");
  p1=new Panel();
  p2=new Panel();
  p3=new Panel();
  p4=new Panel();
  setLayout(new GridLayout(4,1));
  p1.setLayout(null);
  p2.setLayout(new GridLayout(1,2));
  p3.setLayout(new GridLayout(1,2));
  p4.setLayout(new FlowLayout());
  p1.add(enterMessage);
  enterMessage.setBounds(10,10,100,25);
  p1.add(enterMessaget);
  enterMessaget.setBounds(110,10,100,25);
  p1.add(to);
  to.setBounds(220,10,30,25);
  p1.add(clientName);
  clientName.setBounds(260,10,100,25);
  p1.add(send);
  send.setBounds(370,10,100,25);
  p2.add(receivedMessages);
  p2.add(receivedMessagest);
  p3.add(sentMessages);
  p3.add(sentMessagest);
  p4.add(exit);
  add(p1);
  add(p2);
  add(p3);
  add(p4);
  exit.addActionListener(this); 
  send.addActionListener(this);
  try{
   s=new Socket("localhost",2500);
   br=new BufferedReader(new InputStreamReader(s.getInputStream()));
   pw=new PrintWriter(s.getOutputStream(),true);
   setTitle(br.readLine());
  }catch(Exception e){
   System.out.println("Exception: Problem establishing connectionn"+e);
  }
  new ReceiveMsg().start();
 }
 public static void main(String args[]){
  new ChatClient();
 }
 public void actionPerformed(ActionEvent ae){
  if(ae.getSource()==send){
   try{
    pw.println("msg");
    String client=clientName.getSelectedItem();
    String msg=enterMessaget.getText();
    pw.println(client);
    pw.println(msg);
    sentMessagest.append(client+" : "+msg+"n");
   }catch(Exception e){
   }
   
  }
  else if(ae.getSource()==exit){
   try{
    pw.println("shutdown");
   }catch(Exception e){
   }
   System.exit(0);
  }
 }
 class ReceiveMsg extends Thread{
  public void run(){
   while(true){
    try{
     String temp=br.readLine();
     if(temp.equals("update")){
      receiveUpdate();     
     }
     else if(temp.equals("msg")){
      receiveMsg();
     }
    }catch(Exception e){
    }
   }    
  }
  public void receiveMsg(){
   try{
    receivedMessagest.append(br.readLine()+"n");
   }catch(Exception e){
   }
  }
  public void receiveUpdate(){
   try{
    int n=Integer.parseInt(br.readLine());
    clientName.removeAll();
    for(int i=0;i<n;i++)
     clientName.add(br.readLine());      
   }catch(Exception e){
   }
  }
 }
 class sendUpdate extends Thread{
  public void run(){
   while(true){
    pw.println("alive");
    try{
     sleep(10000);
    }catch(Exception e){
    }
   }
  }
 }
}

Labels: Java Network Example

Leave a Reply

Newer Post Older Post
Subscribe to: Post Comments ( Atom )
  • Popular
  • Recent
  • Archives
Powered by Blogger.
 
 
 
© 2011 Java Programs and Examples with Output | Designs by Web2feel & Fab Themes

Bloggerized by DheTemplate.com - Main Blogger