Finally I managed to make a simple GUI Java Network Chat Work.
- It is two way. I meant client-server. Earlier I did a client to server messaging application.
- Connection is given inside the code itself. Its temporarily given as localhost. You can make it work in any LAN by substituting it with clients IP address.
- You will find many errors with this. Yet this will atleast teach you how not to programin JAVA. ;)
Code given here:
client.java
import java.net.*;
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class client extends JFrame implements ActionListener
{
Socket soc=null;
PrintWriter pr=null;
DataInputStream din =null;
JPanel panel1=new JPanel();
JButton button1=new JButton("Send");
JTextArea text1=new JTextArea(20,30);
JTextArea text2=new JTextArea(5,30);
class msgs implements Runnable
{
Thread t=null;
msgs()
{
t=new Thread(this);
t.start();
}
public void run()
{
while(true){
try{
text1.setText(text1.getText()+din.readLine());
}catch(Exception ae){}
}
}
}
client()
{
try{
soc=new Socket("localhost",2008);
din= new DataInputStream(soc.getInputStream());
pr=new PrintWriter(soc.getOutputStream(),true);
panel1.setLayout(null);
setLayout(new BorderLayout());
text1.setBounds(5,5,200,200);
text2.setBounds(5,210,200,50);
button1.setBounds(5,290,200,50);
panel1.add(text1);
panel1.add(text2);
panel1.add(button1);
getContentPane().add(panel1);
button1.addActionListener(this);
msgs m = new msgs();
}catch(Exception e){}
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand().equals("Send"))
{
pr.println("Client: "+text2.getText());
text1.setText(text1.getText()+ "\nClient: "+text2.getText());
}
}
public static void main(String args[])
{
client client1=new client();
client1.setSize(250,400);
client1.setVisible(true);
}
}
server.java:
import java.net.*;
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class server extends JFrame implements ActionListener
{
ServerSocket servSoc = null;
Socket soc=null;
DataInputStream din=null;
PrintWriter pr = null;
JPanel panel1=new JPanel();
JButton button1=new JButton("Send");
JTextArea text1=new JTextArea(20,30);
JTextArea text2=new JTextArea(5,30);
class readMsg implements Runnable
{
Thread t=null;
readMsg()
{
t=new Thread(this);
t.start();
}
public void run()
{
while(true){
try{
text1.setText(text1.getText()+din.readLine());
}catch(Exception e){}
}
}
}
server()
{
super("Server");
try{
servSoc=new ServerSocket(2008);
panel1.setLayout(null);
setLayout(new BorderLayout());
text1.setBounds(5,5,200,200);
text2.setBounds(5,210,200,50);
button1.setBounds(5,290,200,50);
panel1.add(text1);
panel1.add(text2);
panel1.add(button1);
getContentPane().add(panel1);
setSize(250,400);
setVisible(true);
button1.addActionListener(this);
soc=servSoc.accept();
din= new DataInputStream(soc.getInputStream());
pr=new PrintWriter(soc.getOutputStream(),true);
readMsg r=new readMsg();
}catch(Exception e){}
}
public void actionPerformed(ActionEvent ae)
{
System.out.println("Aaaaa");
if(ae.getActionCommand().equals("Send"))
{
pr.println("Server: "+text2.getText());
text1.setText(text1.getText()+ "\nServer: "+text2.getText());
}
}
public static void main(String args[]) throws Exception
{
server server1=new server();
}
}