Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a program that enables two users to chat using JavaFX, threads, sockets. I

ID: 3829572 • Letter: W

Question

Write a program that enables two users to chat using JavaFX, threads, sockets.

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 send to the client.

The client too has two text areas: One for entering text and the other(non editable) for displaying text received from the server. When the user presses the enter key , the current line is send to the server.

Server Server Client

Explanation / Answer

Client Code:-


package com.pkg.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 Test 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 Test();
}

public Test() {
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);

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 Code:-

package com.pkg.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 Test1 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 Test1();
}

public Test1() {
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);
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();
  
}
}
});
}

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);
}
}
}
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote