Java programming based on TCP protocol Socket chat room example

  • 2021-01-14 05:57:14
  • OfStack

This paper describes the Java programming implementation based on TCP protocol Socket chat room. To share with you for your reference, as follows:

Here, Socket socket is used for programming, which is based on TCP reliable service to achieve dual communication between server and client.

Server server-side:


package com.han;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
import java.net.*;
import javax.swing.JDialog;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
 *  This procedure is realized 1 a TCP The server programming portion of the program. 
 *  use Socket Sockets are programmed to be completed based on TCP Reliable service implements dual communication with the client. 
 *  The programming for the client is shown in the classes in this package Client
 * @author HAN
 *
 */
@SuppressWarnings("serial")
public class Server extends JDialog{
  private BufferedReader reader;
  private PrintWriter writer;
  private ServerSocket server;
  private Socket socket;
  private JTextArea ta=new JTextArea();
  private JScrollPane sp=new JScrollPane(ta);
  private JTextField tf=new JTextField();
  Container cc;
  public Server(String title) {
    setTitle(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing (WindowEvent we) {
        dispose(); // undo dialog1 Relevant resources 
        System.exit(0); // Normal exit procedure 
      }
    });
    cc=getContentPane();
    setLayout(null);
    ta.setLineWrap(true);
    ta.setEditable(false);
    sp.setBounds(0,0,300,342);
    tf.setBounds(0,342,300,25);
    cc.add(sp);
    cc.add(tf);
    tf.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
        try {
          writer=new PrintWriter(socket.getOutputStream(),true);
        } catch (IOException e1) {
          // TODO Auto-generated catch block
          e1.printStackTrace();
        }
        writer.println(tf.getText());
        ta.append("User1 : "+tf.getText()+'\n');
        tf.setText("");
      }
    });
  }
  void getserver(){
    try{
      server=new ServerSocket(8998);
      ta.append(" The server socket has been created successfully \n");
      while(true){
        ta.append(" Wait for the client to connect \n");
        socket=server.accept();
        ta.append(" Client connected \n");
        reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        getClientMessage();
      }
    }catch(Exception e){
      e.printStackTrace();
    }
  }
  private void getClientMessage(){
    try {
      while(true){
        String news=reader.readLine();
        if(news!=null){
          ta.append("User2 : "+news+"\n");
        }else{
          ta.append("User2 (client side)   Broken link \n");
          break;
        }
      }
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    try{
      if(reader!=null){
        reader.close();
      }
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    if(socket!=null){
      try {
        socket.close();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }
  public static void main(String[] args) {
    Server user1=new Server("User1");
    user1.setBounds(0,0,300,400);
    user1.setResizable(false);
    user1.setVisible(true);
    user1.getserver();
  }
}

Client Client:


package com.han;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
/**
 *  This procedure is realized 1 a TCP The client programming portion of the program. 
 *  use Socket Sockets are programmed to be completed based on TCP Reliable service realizes dual communication with the server. 
 *  The programming of the server is shown in the classes in this package Server
 *  It can run on different platforms and on different machines, just write the code IP Change the address to run the server program Server The machine IP Address. 
 * @author HAN
 *
 */
@SuppressWarnings("serial")
public class Client extends JDialog{
  private BufferedReader reader;
  private PrintWriter writer;
  private Socket socket;
  private JTextArea ta=new JTextArea();
  private JScrollPane sp=new JScrollPane(ta);
  private JTextField tf=new JTextField();
  Container cc;
  public Client(String title) {
    setTitle(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing (WindowEvent we) {
        dispose(); // undo dialog1 Relevant resources 
        System.exit(0); // Normal exit procedure 
      }
    });
    cc=getContentPane();
    setLayout(null);
    ta.setLineWrap(true);
    ta.setEditable(false);
    sp.setBounds(0,0,300,342);
    tf.setBounds(0,342,300,25);
    cc.add(sp);
    cc.add(tf);
    tf.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
        writer.println(tf.getText());
        ta.append("User2 : "+tf.getText()+'\n');
        tf.setText("");
      }
    });
  }
  private void connect(){
    ta.append(" Try to connect \n");
    try {
      socket=new Socket("192.168.1.3",8998);
    } catch (UnknownHostException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    try {
      writer=new PrintWriter(socket.getOutputStream(),true);
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    ta.append(" Complete the connection \n");
  }
  private void getClientMessage(){
    try {
      reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
      while(true){
        String news=reader.readLine();
        if(news!=null){
          ta.append("User1 : "+news+"\n");
        }else{
          ta.append("User1 (Server)   Disconnected, wait for the server to reconnect, restart User2 (client) to communicate \n");
          break;
        }
      }
    } catch (IOException e) {
      // TODO Auto-generated catch block
      ta.append("User1 (Server)   Disconnected, wait for the server to reconnect, restart User2 (client) to communicate \n");
      e.printStackTrace();
    }
    try{
      if(reader!=null){
        reader.close();
      }
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    if(socket!=null){
      try {
        socket.close();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }
  public static void main(String[] args) {
    Client user2=new Client("User2");
    user2.setBounds(0,0,300,400);
    user2.setVisible(true);
    user2.setResizable(false);
    user2.connect();
    user2.getClientMessage();
  }
}

More about java related content interested readers can see the site features: Java Socket programming skills summary, Java file and directory operation skills summary, Java data structure and algorithm tutorial, Java operation DOM node skills summary and Java cache operation skills summary

Hope this article described to everyone java program design is helpful.


Related articles: