Write a program that enables two users to chat Implement one
Write a program that enables two users to chat. Implement one user as the server and the other as the client. The server has two text areas: one for entering text and the other (non editable) for displaying text received from the client. When the user presses the Enter key, the current line is sent to the client. The client has two text areas: one (non editable) for displaying text from the server and the other for entering text. When the user presses the Enter key, the current line is sent to the server. Name the client Assignment5Client and the server Assignment5Server. PLEASE KEEP IT SIMPLE BECAUSE IT IS A JAVA COURSE!
Solution
Client side script:
client.java
package sheet4_q7_client;
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class Sheet4_Q7_Client extends JFrame{
String s=\"\";
private JTextArea jtaServer = new JTextArea();
private JTextArea jtaClient = new JTextArea();
private PrintWriter output,output1,output2;
public static void main(String[] args) {
new Sheet4_Q7_Client();
}
public Sheet4_Q7_Client() {
setLayout(new GridLayout(2, 1));
JScrollPane jScrollPane1 = new JScrollPane(jtaServer);
JScrollPane jScrollPane2 = new JScrollPane(jtaClient);
jScrollPane1.setBorder(new TitledBorder(\"Server\"));
jScrollPane2.setBorder(new TitledBorder(\"Client\"));
add(jScrollPane2, BorderLayout.CENTER);
add(jScrollPane1, BorderLayout.CENTER);
jtaServer.setWrapStyleWord(true);
jtaServer.setLineWrap(true);
jtaClient.setWrapStyleWord(true);
jtaClient.setLineWrap(true);
setTitle(\"Exercise30_12Client\");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true); try {
Socket connectToServer = new Socket(\"localhost\", 8000);
//output = new
//PrintWriter(connectToServer.getOutputStream());
new SendThread(connectToServer).start();
new ReceiveThread(connectToServer).start();
}
catch(IOException ex) {
System.err.println(ex);
}
jtaServer.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_BACK_SLASH) {
s=jtaServer.getText().toString();
}
}
});
}
class SendThread extends Thread {
SendThread(Socket socket) {
try {
output1 = new PrintWriter(socket.getOutputStream());
output1.write(s);
output1.flush();
}
catch(IOException ex) {
System.err.println(ex);
}
}
}
class ReceiveThread extends Thread {
ReceiveThread(Socket socket) {
try {
Scanner input1 = new Scanner(socket.getInputStream());
String s1=input1.nextLine();
jtaServer.setText(s1);
}
catch(IOException ex) {
System.err.println(ex);
}
}
}
}
Server side script:
package sheet4_q7_server;
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class Sheet4_Q7_Server extends JFrame{
String s=\"\";
private JTextArea jtaServer = new JTextArea();
private JTextArea jtaClient = new JTextArea();
private PrintWriter output,output1;
public static void main(String[] args) {
new Sheet4_Q7_Server();
}
public Sheet4_Q7_Server() {
setLayout(new GridLayout(2, 1));
JScrollPane jScrollPane1 = new JScrollPane(jtaServer);
JScrollPane jScrollPane2 = new JScrollPane(jtaClient);
jScrollPane1.setBorder(new TitledBorder(\"Server\"));
jScrollPane2.setBorder(new TitledBorder(\"Client\"));
add(jScrollPane1, BorderLayout.CENTER);
add(jScrollPane2, BorderLayout.CENTER);
jtaServer.setWrapStyleWord(true);
jtaServer.setLineWrap(true);
jtaClient.setWrapStyleWord(true);
jtaClient.setLineWrap(true);
// jtaClient.setEditable(false);
setTitle(\"Exercise30_12Server\");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
try {
ServerSocket serverSocket = new ServerSocket(8000);
Socket connectToClient = serverSocket.accept();
output = new
PrintWriter(connectToClient.getOutputStream());
new SendThread(connectToClient).start();
new ReceiveThread(connectToClient).start();
}
catch(IOException ex) {
System.err.println(ex);
}
jtaServer.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_ENTER) {
s=jtaServer.getText().toString();
//System.out.print(s);
}
}
});
}
class SendThread extends Thread {
SendThread(Socket socket) {
try {
output1 = new PrintWriter(socket.getOutputStream());
output1.write(s);
output1.flush();
}
catch(IOException ex) {
System.err.println(ex);
}
}
}
class ReceiveThread extends Thread {
ReceiveThread(Socket socket) {
try {
Scanner input1 = new Scanner(socket.getInputStream());
String s1=input1.nextLine();
jtaClient.setText(s1);
}
catch(IOException ex) {
System.err.println(ex);
}
}
}
}




