Home | Ajax | BioInformatics | Dojo | EAI | EJB | Hibernate | J2ME | Java | Java Glossary | Java Servlets | JavaScript | Jboss | JDBC | JDO | Jmeter | JSF | JSP | JUnit | Maven | MySQL | Spring Framework | SQL | Struts | Technology | WAP | Web Services | XML
 
 
Search All Tutorials
  

 
Programming Tutorials: Ajax | Articles | JSP | Bioinformatics | Database | Free Books | Hibernate | J2EE | J2ME | Java | JavaScript | JDBC | JMS | Linux | MS Technology | PHP | RMI | Web-Services | Servlets | Struts | UML
 
Tutorials
  JDO Tutorials
  EAI Articles
  Struts Tutorials
  Java Tutorials
  Java Certification
  Java Applet
Questions
Comments

Client Side Application

                         

For creating the Client side application firstly creates the login frame it consist one textfield and the login button. After hitting the login button it shows the next frame that Client Frame and it consist one textfield for writing the message and one send button for sending it. And two list boxes, one is for showing the all messages and another list box is use to show the all user names. This frame has one more button that is Logout button for terminating the chat.

For running the whole Client operation we can run the Login file (Login.java). It can directly call Client file (MyClient.java).

Here is the code of Login.java file :

/****************************************************************
*  Version    :  1.0
*  Date    :  02/03/2007
*  
*  Description
*  This is a Login frame of client side application in chat System.
*  It is used to just take the user name 
*  
*  Remarks
*  Before running the Login application make sure the server is 
*  running.

*  If server is running then only you can execute your application.
******************************************************************/

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

// Login class which takes a user name and passed it to client class
public class Login implements ActionListener{
  JFrame frame1;
  JTextField tf;
  JButton button;
  JLabel heading;
  JLabel label;
  public static void main(String[] args){
    new Login();
  }
  public Login(){
    frame1 = new JFrame("Login Page");
    tf=new JTextField();
    button=new JButton("Login");
    heading=new JLabel("Chat Server");
    heading.setFont(new Font("Impact", Font.BOLD,40));
    label=new JLabel("Enter you Login Name");
    label.setFont(new Font("Serif", Font.PLAIN, 24));
    JPanel panel = new JPanel();
    button.addActionListener(this);
    panel.add(heading);panel.add(tf);panel.add(label);
    panel.add
(button);
    heading.setBounds(30,20,280,80);
    label.setBounds(20,100,250,60);
    tf.setBounds(50,150,150,30);
    button.setBounds(70,200,90,30);
    frame1.add(panel);
    panel.setLayout(null);
    frame1.setSize(300300);
      frame1.setVisible(true);
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  // pass the user name to MyClient class
  public void actionPerformed(ActionEvent e){
    String name="";
    try{
      name=tf.getText();
      frame1.dispose();
      MyClient mc=new MyClient(name);
    }catch (IOException te){}
  }
}

Download this Code

Output of the code is :

The Client side application follows these steps :

  • In the client sides firstly creates a new socket and specifies the address and port of the server and establish the connection with the Server.
    Socket s=new Socket("localhost",1004);

    Note - Instead of "localhost" you have to write the server IP address or computer name.

         
  • After that client makes a new thread and DataInputStream, ObjectInputStream and DataOutputStream for sending the user name and retrieving the list of all users and add the all user name in its list box through iterator.
            DataOutputStream dout=new DataOutputStream(s.getOutputStream());
            dout.writeUTF(name);
            DataInputStream din1=new DataInputStream(s.getInputStream());
            ObjectInputStream obj=new ObjectInputStream(din1);
            ArrayList alname=new ArrayList();
            Alname=(ArrayList)obj.readObject();
            String lname;
            Iterator i1=alname.iterator();
            while(i1.hasNext()){
            lname=(String)i1.next();
            model1.addElement(lname);
            }

        
    Note – model1 is the object of DefaultListModel that is used to add the element in JList Box.
         
  • Now we make one new thread for sending and receiving the messages from the server. It does this task by using DataInputStream and DataOutputStream.
            dout.writeUTF(str); // for sending the messages
            str1=din.readUTF(); // receiving the messages
            model.addElement(str1) // add these messages to JList Box
  • When the client is logged out it sends its name and message “User_Name has Logged out” and terminate the chatting
            dout.writeUTF(name+" has Logged out");
            dlout.writeUTF(name);

Here is the code of Client Side application :

/****************************************************************
*  Version    :  1.0
*  Date       :  02/03/2007
*  
*  Description
*  This is a client side of chat application.
*  This application is used to sending and receiving the messages
*  and in this we can maintain the list of all online users
*  
*  Remarks
*  Before running the client application make sure the server is 
*  running.If server is running then only you can execute your
*  application.
******************************************************************/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.Iterator;

//create the GUI of the client side
public class MyClient extends WindowAdapter implements ActionListener{
  JFrame frame;
  JList list;
  JList list1;
  JTextField tf;
  DefaultListModel model;
  DefaultListModel model1;
  JButton button;
  JButton lout;
  JScrollPane scrollpane;
  JScrollPane scrollpane1;
  JLabel label;
  Socket s,s1,s2;
  DataInputStream din;
  DataOutputStream dout;
  DataOutputStream dlout;
  DataOutputStream dout1;
  DataInputStream din1;
  String name;
  
  MyClient(String name)throws IOException{
    frame = new JFrame("Client Side");
    tf=new JTextField();
    model=new DefaultListModel();
    model1=new DefaultListModel();
    label=new JLabel("Message");
    list=new JList(model);
    list1=new JList(model1);
    button=new JButton("Send");
    lout=new JButton("Logout");
    scrollpane=new JScrollPane(list);
    scrollpane1=new JScrollPane(list1);
    JPanel panel = new JPanel();
    button.addActionListener(this);
    lout.addActionListener(this);
    panel.add(tf);panel.add(button);panel.add(scrollpane);
    panel.add(label);panel.add(lout);
    panel.add(scrollpane1);
    scrollpane.setBounds(10,20,180,150);
    scrollpane1.setBounds(250,20,100,150);
    label.setBounds(20,180,80,30);
    tf.setBounds(100,180,140,30);
    button.setBounds(260,180,90,30);
    lout.setBounds(260,230,90,30);
    frame.add(panel);
    panel.setLayout(null);
    frame.setSize(400400);
       frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.name=name;
    frame.addWindowListener(this);
    s=new Socket("localhost",1004);  //creates a socket object
    s1=new Socket("localhost",1004);
    s2=new Socket("localhost",1004);
      //create inputstream for a particular socket
    din=new DataInputStream(s.getInputStream());
    //create outputstream
    dout=new DataOutputStream(s.getOutputStream());
    //sending a message for login
    dout.writeUTF(name+" has Logged in");  
    dlout=new DataOutputStream(s1.getOutputStream());
    dout1=new DataOutputStream(s2.getOutputStream());
    din1=new DataInputStream(s2.getInputStream());

// creating a thread for maintaning the list of user name
    My1 m1=new My1(dout1,model1,name,din1);
    Thread t1=new Thread(m1);
    t1.start();      
  //creating a thread for receiving a messages
    My m=new My(din,model);
    Thread t=new Thread(m);
    t.start();
    }
  public void actionPerformed(ActionEvent e){
    // sending the messages
    if(e.getSource()==button){  
      String str="";
      str=tf.getText();
      tf.setText("");
      str=name+": > "+str;
      try{
      dout.writeUTF(str);
      System.out.println(str);
      dout.flush();
      }catch(IOException ae){System.out.println(ae);}
    }
    // client logout
    if (e.getSource()==lout){
      frame.dispose();
      try{
         //sending the message for logout
      dout.writeUTF(name+" has Logged out");
      dlout.writeUTF(name);
      dlout.flush();
      Thread.currentThread().sleep(1000);
      System.exit(1);
      }catch(Exception oe){}
    }
  }
  public void windowClosing(WindowEvent w){
    try{
      dlout.writeUTF(name);
      dlout.flush();  
      Thread.currentThread().sleep(1000);
      System.exit(1);
      }catch(Exception oe){}
    }
}

// class is used to maintaning the list of user name
class My1 implements Runnable{
  DataOutputStream dout1;
  DefaultListModel model1;  
  DataInputStream din1;
  String name,lname;
  ArrayList alname=new ArrayList()//stores the list of user names
  ObjectInputStream obj; // read the list of user names
  int i=0;
  My1(DataOutputStream dout1,DefaultListModel model1,
         String name,DataInputStream din1
){
    this.dout1=dout1;
    this.model1=model1;
    this.name=name;
    this.din1=din1;
  }
  public void run(){
    try{
    dout1.writeUTF(name);  // write the user name in output stream
    while(true){
      obj=new ObjectInputStream(din1);
      //read the list of user names
      alname=(ArrayList)obj.readObject()
      if(i>0)
      model1.clear()
      Iterator i1=alname.iterator();
      System.out.println(alname);
      while(i1.hasNext()){
        lname=(String)i1.next();
        i++;
         //add the user names in list box
        model1.addElement(lname);
        }
      }
    }catch(Exception oe){}
  }
}
//class is used to received the messages
class My implements Runnable{
  DataInputStream din;
  DefaultListModel model;
  My(DataInputStream din, DefaultListModel model){
    this.din=din;
    this.model=model;
  }
  public void run(){
    String str1="";
    while(true){
      try{
        str1=din.readUTF()// receive the message
        // add the message in list box
        model.addElement(str1);
      }catch(Exception e){}
    }
  }
}

 Download this application

Output of the Client Side Application is


            


                 


                      

                         

Facing Programming Problem?
Add This Tutorial To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 

Current Comments

2 comments so far (post your own) View All Comments Latest 10 Comments:

Good piece of work. Keep it up

Posted by razack on Thursday, 06.5.08 @ 17:28pm | #62193

very good project. you have done a truly marvelous work.
thanks

Posted by ricky on Wednesday, 03.7.07 @ 16:28pm | #10987

Leave your comment:

Name:

Email:

URL:

Title:

Comments:


Enter Code:

 

Note: Emails will not be visible or used in any way, and are not required. Please keep comments relevant. Any content deemed inappropriate or offensive may be edited and/or deleted.

No HTML code is allowed. Line breaks will be converted automatically. URLs will be auto-linked. Please use BBCode to format your text.

Hot Web Programming Job

Java String toLowerCase Example
Java String toCharArray Example
Java String substring Example
Java String indexOf Example
Java String startsWith Example
Java String hashCode Example
Java String matches Example
Java String length Example
Java String lastIndexOf Example
Java String isEmpty Example
Java String equalsIgnoreCase Example
Java String equals Example
Java String endsWith Example
Java String copyValueOf Example
Java String contentEquals Example
  EAI Articles
  Java Certification
Tell A Friend
Your Friend Name
Search Tutorials

 

 
 
Browse all Java Tutorials
Java JSP Struts Servlets Hibernate XML
Ajax JDBC EJB MySQL JavaScript JSF
Maven2 Tutorial JEE5 Tutorial Java Threading Tutorial Photoshop Tutorials Linux Technology
Technology Revolutions Eclipse Spring Tutorial Bioinformatics Tutorials Tools SQL
 

Home | JSP | EJB | JDBC | Java Servlets | WAP  | Free JSP Hosting  | Search Engine | News Archive | Jboss 3.0 tutorial | Free Linux CD's | Forum | Blogs

About Us | Advertising On RoseIndia.net  | Site Map

India News

Send your comments, Suggestions or Queries regarding this site at roseindia_net@yahoo.com.

Copyright © 2007. All rights reserved.