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