java console to implement chat program

  • 2021-10-25 06:57:37
  • OfStack

This article example for everyone to share the java console to achieve the specific code of the chat program, for your reference, the specific content is as follows

Sender


package ip.chat;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

public class TalkSend implements Runnable{
    DatagramSocket socket = null;
    BufferedReader reader = null;

    private int formIP;
    private   String toIP;
    private int toPort;

    public TalkSend(int formIP, String toIP, int toPort) {
        this.formIP = formIP;
        this.toIP = toIP;
        this.toPort = toPort;
        try {
            socket = new DatagramSocket();
            reader = new BufferedReader(new InputStreamReader(System.in));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    @Override
    public void run() {

        while (true){
            try {
                String data = reader.readLine();
                byte[] datas = data.getBytes();
                DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress(this.toIP, this.toPort));

                socket.send(packet);
                if (data.equals("bye")){
                    break;
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }

        // Shut down 
        socket.close();
    }
}

Server side


package ip.chat;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class TalkReceive implements Runnable{
    DatagramSocket socket = null;
    private int port;
    // Set the message source 
    private String msgFrom;

    public TalkReceive(int port ,String msgFrom) {
        this.port = port;
        this.msgFrom = msgFrom;
        try {
            socket = new DatagramSocket(port);
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void run() {
        while(true){
            try {
                // Prepare to receive package 
                byte[] container = new byte[1024];

                DatagramPacket packet = new DatagramPacket(container,0,container.length);
                socket.receive(packet);// Receive a package 

                // Disconnect 
                byte[] data = packet.getData();
                String receiveData = new String(data, 0, data.length);

                System.out.println(msgFrom+" : "+receiveData);
                if (receiveData.equals("bye")){
                    break;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        socket.close();
    }
}

Student side code


package ip.chat;

public class TalkStudent {
    public static void main(String[] args) {
        // Open two threads 
        new Thread(new TalkSend(7777,"localhost",9999)).start();
        new Thread(new TalkReceive(8888," Teacher ")).start();
        
    }
}

Teacher side code


package ip.chat;

public class TalkTeacher {
    public static void main(String[] args) {
        new Thread(new TalkSend(5555,"localhost",8888)).start();
        new Thread(new TalkReceive(9999," Students ")).start();
 
  }
}

Related articles: