title: Simple text chat application
body: <p>I have developed simple text chat application using applets in java. It consists of two files. </p>
  
  <ol>
  <li>server.java-> to access server part </li>
  <li>client.java-> to access client part </li>
  </ol>
  
  <p>After opening both applet , chat can happen between server &amp; client.</p>
  
  <pre><code>Here's my server side code:
  
      Serverfile.java
  
      import java.net.*;
      import java.io.*;
      import java.awt.*;
      import java.awt.event.*;
      import javax.swing.*;
  
      public class serverfile extends JFrame {
      private JTextField usertext;
      private JTextArea chatwindow;
      private ObjectOutputStream output;
      private ObjectInputStream input;
      private ServerSocket server;
      private Socket connection;
  
      public serverfile(){
      super("server messaging system");    
      usertext= new JTextField();
      usertext.setEditable(false);
      usertext.addActionListener( new ActionListener(){
      public void actionPerformed(ActionEvent event){
      sendmessage(event.getActionCommand());
      usertext.setText("");
        }
      }
      );
      add(usertext,BorderLayout.SOUTH);
      chatwindow= new JTextArea();
      add(new JScrollPane(chatwindow));
      setSize(300,250);
      setVisible(true);
      }
  
     public void startrunning(){
     try{
     server= new ServerSocket(6789,100);
     while(true){
     try{
     waitForConnection();
     setupstream();
     whilechatting();
     }catch(Exception e){
     System.out.println("you have an error in coversation with client");
     }finally{
     closecrap();
     }
     }
     }
     catch(Exception e){
     System.out.println("you have an error in connecting with client");
     }
     }
     private void waitForConnection() throws IOException{
  
     showmessage("waiting for someone to connect");
     connection= server.accept();
     showmessage("now connected to"+connection.getInetAddress().getHostName());
     }
  
     private void setupstream() throws IOException{
  
     output= new ObjectOutputStream(connection.getOutputStream());
     output.flush();
     input= new ObjectInputStream(connection.getInputStream());
     showmessage("\n streams are setup");
     }
  
     private void whilechatting()throws IOException{
  
     String message = "\n you are now connected";
     sendmessage(message);
     ableToType(true);
     do{
     try{
     message = (String)input.readObject();
     showmessage("\n"+message);
     catch(Exception e){
     System.out.println("\n error in reading message");
     }
     }while(!message.equals("CLIENT-END"));
     }
  
     private void closecrap(){
  
     showmessage("\nclosing connection");
     ableToType(false);
     try{
     output.close();
     input.close();
     connection.close();
     }catch(Exception e){
     System.out.println("\n error in closing server");
  
     }
     }
  
     private void sendmessage(String message){
  
     try{
     output.writeObject("SERVER-"+message);
     output.flush();
     }catch(Exception e){
     chatwindow.append("\n error in sending message from server side");
     }
     }
  
     private void showmessage(final String text){
  
     SwingUtilities.invokeLater( new Runnable(){
     public void run(){
     chatwindow.append(text);
     }
      }
     );
      }
  
     private void ableToType(final boolean tof){
  
     SwingUtilities.invokeLater( new Runnable(){
      public void run(){
      usertext.setEditable(tof);
      }
      }
      );
      }
      }
  
  
      Server.java-&gt; which access serverfile code:
  
      import javax.swing.JFrame
  
       public class server {
        public static void main(String args[]){
        serverfile obj1= new serverfile();
        obj1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       obj1.startrunning();
           }    
             }
  </code></pre>
  
  <p>My client side code:</p>
  
  <pre><code>    Clientfile.java
  
      import java.net.*;
      import java.io.*;
      import java.awt.*;
       import java.awt.event.*;
        import javax.swing.*;
  
          public class clientfile extends JFrame {
            private JTextField usertext;
            private JTextArea chatwindow;
            private ObjectOutputStream output;
             private ObjectInputStream input;
            private String message="";
              private String serverIP;
              private ServerSocket server;
                 private Socket connection;
  
               public clientfile(String host){
                super("client messaging system");  
               serverIP=host;
              usertext= new JTextField();
   usertext.setEditable(false);
   usertext.addActionListener( new ActionListener(){
   public void actionPerformed(ActionEvent event){
       sendmessage(event.getActionCommand());
       usertext.setText("");
        }
   }
   );
   add(usertext,BorderLayout.SOUTH);
   chatwindow= new JTextArea();
   add(new JScrollPane(chatwindow));
   setSize(300,250);
   setVisible(true);
  }
  
          public void startrunning(){
              try{
         connecttoserver();
           setupstream();
            whilechatting();
          }catch(Exception e){
           System.out.println("you have an error in coversation with server");
              }
             finally{
             closecrap();
                 }
                 }
              private void connecttoserver() throws IOException{
            showmessage("attempting connection");
            connection= new Socket(InetAddress.getByName(serverIP),6789);
           showmessage("connected to"+connection.getInetAddress().getHostName());
             }
               private void setupstream() throws IOException{
               output= new ObjectOutputStream(connection.getOutputStream());
            output.flush();
              input= new ObjectInputStream(connection.getInputStream());
          showmessage("\n streams are good to go");
                }
  
            private void whilechatting()throws IOException{
           ableToType(true);
              do{
             try{
             message = (String)input.readObject();
               showmessage("\n"+message);
          }catch(Exception e){
            System.out.println("\n error in writing message");
              }
          }while(!message.equals("SERVER - END"));
               }
  
          private void closecrap(){
         showmessage("\nclosing....");
           ableToType(false);
                try{
          output.close();
          input.close();
           connection.close();
           }catch(Exception e){
            System.out.println("\n error in closing client");
         }
            }
           private void sendmessage(String message){
             try{
            output.writeObject("CLIENT-"+message);
             output.flush();
             }catch(Exception e){
             chatwindow.append("\n error in sending message from client side");
               }
                 }
              private void showmessage(final String m){
               SwingUtilities.invokeLater( new Runnable(){
               public void run(){
              chatwindow.append(m);
             }
                }
                   );
                         }
  
                 private void ableToType(final boolean tof){
             SwingUtilities.invokeLater( new Runnable(){
                 public void run(){
                 usertext.setEditable(tof);
                }
              }
                 );
                 }
                }
  
  
  
      Client.java-&gt; access client file code
  
             import javax.swing.JFrame;
  
            public class client {
             public static void main(String args[]){
           clientfile obj2= new clientfile("127.0.0.1");
            obj2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              obj2.startrunning();
                }        
                   }
  </code></pre>
  
  <p>What i want to know is how can i access chat in two different computer?  Is it possible?</p>
  
  <p>I want server.java on one computer &amp; client.java on another computer. Please if anyone have any solution, let me know. feel free to ask questions. </p>