User Code: ChatKaro
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
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.]
0 Comments (click to add your comment)
Networking Solutions



Solid state disks (SSDs) made a splash in consumer technology, and now the technology has its eyes on the enterprise storage market. Download this eBook to see what SSDs can do for your infrastructure and review the pros and cons of this potentially game-changing storage technology.