AJ_Slip_1B

AJ_Slip_1A

Slip No.1

B) Write a socket program in java for chatting application.(Use Swing)

1. Server Code

    import javax.swing.*;
    import java.awt.*;
    import java.io.*;
    import java.net.*;

    public class ChatServer {
    public static void main(String[] args) {
    JFrame frame = new JFrame("Server Chat");
    JTextArea chatArea = new JTextArea();
    JTextField inputField = new JTextField();
    JButton sendButton = new JButton("Send");

    chatArea.setEditable(false);
    frame.setLayout(new BorderLayout());
    frame.add(new JScrollPane(chatArea), BorderLayout.CENTER);
    JPanel panel = new JPanel(new BorderLayout());
    panel.add(inputField, BorderLayout.CENTER);
    panel.add(sendButton, BorderLayout.EAST);
    frame.add(panel, BorderLayout.SOUTH);

    frame.setSize(400, 400);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    try (ServerSocket serverSocket = new ServerSocket(12345);
    Socket socket = serverSocket.accept();
    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    PrintWriter writer = new PrintWriter(socket.getOutputStream(), true)) {

    chatArea.append("Client connected\n");

    sendButton.addActionListener(e -> {
    String message = inputField.getText();
    if (!message.isEmpty()) {
    writer.println("Server: " + message);
    chatArea.append("You: " + message + "\n");
    inputField.setText("");
    }
    });

    String line;
    while ((line = reader.readLine()) != null) {
    chatArea.append(line + "\n");
    }


    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }

2. Client Code

    import javax.swing.*;
    import java.awt.*;
    import java.io.*;
    import java.net.*;

    public class ChatClient {
    public static void main(String[] args) {
    JFrame frame = new JFrame("Client Chat");
    JTextArea chatArea = new JTextArea();
    JTextField inputField = new JTextField();
    JButton sendButton = new JButton("Send");

    chatArea.setEditable(false);
    frame.setLayout(new BorderLayout());
    frame.add(new JScrollPane(chatArea), BorderLayout.CENTER);
    JPanel panel = new JPanel(new BorderLayout());
    panel.add(inputField, BorderLayout.CENTER);
    panel.add(sendButton, BorderLayout.EAST);
    frame.add(panel, BorderLayout.SOUTH);

    frame.setSize(400, 400);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    try (Socket socket = new Socket("localhost", 12345);
    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    PrintWriter writer = new PrintWriter(socket.getOutputStream(), true)) {

    sendButton.addActionListener(e -> {
    String message = inputField.getText();
    if (!message.isEmpty()) {
    writer.println("Client: " + message);
    chatArea.append("You: " + message + "\n");
    inputField.setText("");
    }
    });

    String line;
    while ((line = reader.readLine()) != null) {
    chatArea.append(line + "\n");
    }

    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }

To Test:
1. Compile and run the server program first.
2. Compile and run the client program.
3. Type messages in either window and see them reflected in both.

No comments:

Post a Comment