Now the Client code for our chat software compile it and run only after server code
import java.lang.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
import java.io.*;
class Clientnode
{
JButton sendbutton;
BufferedReader reader;
PrintWriter writer;
JTextField outgoing;
JTextArea incoming;
JTextField user;
public Clientnode() // constructor of outer class(creates the GUI interface)....
{
JFrame frame = new JFrame("CHATCLIENT");
JPanel mainpanel = new JPanel();
JLabel name = new JLabel("USERNAME");
user = new JTextField(20);
incoming = new JTextArea(10,30);
incoming.setLineWrap(true);
incoming.setWrapStyleWord(true);
incoming.setEditable(false);
outgoing = new JTextField(30);
sendbutton = new JButton("SEND");
JScrollPane scroller = new JScrollPane(incoming);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
mainpanel.add(name);
mainpanel.add(user);
mainpanel.add(scroller);
mainpanel.add(outgoing);
mainpanel.add(sendbutton);
sendbutton.addActionListener(new Write());
frame.getContentPane().add(BorderLayout.CENTER,mainpanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
connect(); // method connect() called..
Thread readingthread = new Thread(new Reading()); // creates a new Thread Object...
readingthread.start(); // starts the new Thread(calls the run() method )...
frame.setSize(400,310);
frame.setVisible(true);
}
class Reading implements Runnable // inner class implementing Runnable interface
{ // (the new thread class)
public void run() // the overridden run() method (what the new thread does.. )
{
String message;
try
{
while((message = reader.readLine()) != null)
{
System.out.println("read"+message);
incoming.append(message+"\n");
}
}
catch(Exception exc)
{
exc.printStackTrace();
}
}
}
class Write implements ActionListener // inner class(implementing ActionListener interface)
{ // for the send button
public void actionPerformed(ActionEvent a) // the overridden actionperformed() method
{ // (called when the button clicks)for writing to the server
try
{
//user.getText().setColor(Color.blue);
writer.println(user.getText()+" - "+outgoing.getText());
System.out.println(outgoing.getText());
writer.flush();
}
catch(Exception ex)
{
ex.printStackTrace();
}
outgoing.setText("");
outgoing.requestFocus();
}
}
void connect() // method for establishing a connection with the server
{
try
{
Socket clientsocket = new Socket("127.0.0.1",4000); // requesting the local host(127.0.0.1),port no.4000
// for connection and creating
// chained streams for reading
// and writing to the socket.
InputStreamReader isr = new InputStreamReader(clientsocket.getInputStream());
reader = new BufferedReader(isr);
writer = new PrintWriter(clientsocket.getOutputStream());
System.out.println("connected");
}
catch(IOException e)
{
e.printStackTrace();
}
}
public static void main(String[] a) // the main() method
{
Clientnode cn = new Clientnode(); // creating an object of Clientnode class(constructor called)
}
}
import java.lang.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
import java.io.*;
class Clientnode
{
JButton sendbutton;
BufferedReader reader;
PrintWriter writer;
JTextField outgoing;
JTextArea incoming;
JTextField user;
public Clientnode() // constructor of outer class(creates the GUI interface)....
{
JFrame frame = new JFrame("CHATCLIENT");
JPanel mainpanel = new JPanel();
JLabel name = new JLabel("USERNAME");
user = new JTextField(20);
incoming = new JTextArea(10,30);
incoming.setLineWrap(true);
incoming.setWrapStyleWord(true);
incoming.setEditable(false);
outgoing = new JTextField(30);
sendbutton = new JButton("SEND");
JScrollPane scroller = new JScrollPane(incoming);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
mainpanel.add(name);
mainpanel.add(user);
mainpanel.add(scroller);
mainpanel.add(outgoing);
mainpanel.add(sendbutton);
sendbutton.addActionListener(new Write());
frame.getContentPane().add(BorderLayout.CENTER,mainpanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
connect(); // method connect() called..
Thread readingthread = new Thread(new Reading()); // creates a new Thread Object...
readingthread.start(); // starts the new Thread(calls the run() method )...
frame.setSize(400,310);
frame.setVisible(true);
}
class Reading implements Runnable // inner class implementing Runnable interface
{ // (the new thread class)
public void run() // the overridden run() method (what the new thread does.. )
{
String message;
try
{
while((message = reader.readLine()) != null)
{
System.out.println("read"+message);
incoming.append(message+"\n");
}
}
catch(Exception exc)
{
exc.printStackTrace();
}
}
}
class Write implements ActionListener // inner class(implementing ActionListener interface)
{ // for the send button
public void actionPerformed(ActionEvent a) // the overridden actionperformed() method
{ // (called when the button clicks)for writing to the server
try
{
//user.getText().setColor(Color.blue);
writer.println(user.getText()+" - "+outgoing.getText());
System.out.println(outgoing.getText());
writer.flush();
}
catch(Exception ex)
{
ex.printStackTrace();
}
outgoing.setText("");
outgoing.requestFocus();
}
}
void connect() // method for establishing a connection with the server
{
try
{
Socket clientsocket = new Socket("127.0.0.1",4000); // requesting the local host(127.0.0.1),port no.4000
// for connection and creating
// chained streams for reading
// and writing to the socket.
InputStreamReader isr = new InputStreamReader(clientsocket.getInputStream());
reader = new BufferedReader(isr);
writer = new PrintWriter(clientsocket.getOutputStream());
System.out.println("connected");
}
catch(IOException e)
{
e.printStackTrace();
}
}
public static void main(String[] a) // the main() method
{
Clientnode cn = new Clientnode(); // creating an object of Clientnode class(constructor called)
}
}
No comments:
Post a Comment