JavaUser Code: ChatKaro

User Code: ChatKaro

Developer.com content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

Tips to run this:

Step 1. Open command prompt and run ‘java chatkaro121’.

Step 2. Open another prompt and run ‘java chatkaro121 127.0.0.1
(or IP address of the server).


*/	


//  Program Starts...

import java.io.*;
import java.awt.*;
import java.net.*;
import java.awt.event.*;
import java.awt.Button.*;
import javax.swing.*;
public class chatkaro121 extends Panel 
{
Socket sock;
TextArea rtext;
ImageIcon i1,i2;
Frame frame;
private JLabel label;
private int port=8080;
private TextArea stext;
JButton send,exit;
private DataOutputStream remoteOut;
public static void main(String args[])

{
	Frame f=new Frame("Just Wait...");
	f.setCursor(Frame.HAND_CURSOR);
	String s=null;
	if(args.length>0)
		s=args[0];
	chatkaro121 chat=new chatkaro121(f);
	f.add("Center",chat);
	f.setSize(800,600);
	f.show();
	if(s==null)
		chat.server();
	else
		chat.client(s);
}

public chatkaro121(Frame f)
{
frame =f;
frame.addWindowListener(new WindowExitHandler());
label=new JLabel("msg to Send : ");
add(label);
stext=new TextArea(15,30);
add(stext);
label=new JLabel("msg received : ");
add(label);
rtext=new TextArea(15,30);
add(rtext);
ImageIcon i1=new ImageIcon("click.gif");
send=new JButton("Send",i1);
send.setToolTipText("Send");
send.setMnemonic('s');
add(send);
send.addActionListener(new TextActionHandler());

ImageIcon i2=new ImageIcon("doorin2.gif");
exit=new JButton("eXit",i2);
exit.setToolTipText("eXit");
exit.setMnemonic('x');
add(exit);
exit.addActionListener(new EXIT());
}
void server()
{
ServerSocket k=null;
try
{
InetAddress addr=InetAddress.getByName(null);
message("Waiting for connection : " + addr.getHostName() + "port : " + port);
k =new ServerSocket(port,1);
sock=k.accept();
message(" CHATKARO-By Balu. -Welcome " + sock.getInetAddress().getHostName());
remoteOut=new DataOutputStream(sock.getOutputStream());
new chatkaro121Receive(this).start();
}
catch(IOException e)
{
message(e.getMessage() + " : Failed to connect to client.");
}
finally
{
if(k !=null)
{
	try
	{
	k.close();
	}
	catch(IOException x)
	{}
}
}
}

void client(String serverName)
{
try
{
if(serverName.equals("local"))
serverName=null;
InetAddress addr=InetAddress.getByName(serverName);
sock =new Socket(addr.getHostName(),port);
remoteOut=new DataOutputStream(sock.getOutputStream());
message("Chat@Balunet : FTR-(One-to-One)-Connected to server " + addr.getHostName() + " on port " + sock.getPort());
new chatkaro121Receive(this).start();
}
catch(IOException e)
{
message(e.getMessage() + " : Failed to connect.");
}
}
void message(String s) 
{
frame.setTitle(s);
}
protected void finalize() throws Throwable
{
try
{
if(remoteOut!=null)
remoteOut.close();
if(sock!=null)
sock.close();
}
catch(IOException x)
{
}
super.finalize();
}
class WindowExitHandler extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
Window w=e.getWindow();
w.setVisible(false);
w.dispose();
System.exit(0);
}
}

class EXIT implements ActionListener
 {
   public void actionPerformed(ActionEvent e)
  {
   if((JOptionPane.showConfirmDialog(new Frame(),"Are You Sure to close the Session?"))==JOptionPane.YES_OPTION)              
              System.exit(0);
    	
  }
 }
class TextActionHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try
{
remoteOut.writeUTF(stext.getText());
JOptionPane.showMessageDialog(new Frame(),"Your msg has been sent ","Confirmation",0);
stext.setText("");
}
catch(IOException x)
{
message(x.getMessage() + " : Connection to peer lost .");
}
}
}
}
class chatkaro121Receive extends Thread
{
private chatkaro121 chat;
private DataInputStream remoteIn;
private boolean listening=true;
public chatkaro121Receive(chatkaro121 chat)
{
this.chat=chat;
}
public synchronized void run()
{
String s;
try
{
remoteIn=new DataInputStream(chat.sock.getInputStream());
while(listening)
{
s=remoteIn.readUTF();
chat.rtext.setText(s);
}
}
catch(IOException e)
{
chat.message(e.getMessage()+" : Disconnection.");
}
finally
{
try
{
if(remoteIn!=null)
remoteIn.close();
}
catch(IOException  x)
{
}}}}

Downloads

Download source file = 4K

Dedication: To my Brothers and Sisters.

This code was contributed by
S. Balasubramanian.

[To contribute a code article to Gamelan, please
contact kmurphy@internet.com.]

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Latest Posts

Related Stories