发送端
public class TalkSend implements Runnable{ DatagramSocket datagramSocket = null; BufferedReader reader = null; private int fromPort; private String toIP; private int toPort; public TalkSend(int fromPort, String toIP, int toPort) { this.fromPort = fromPort; this.toIP = toIP; this.toPort = toPort; try { //1.创建Socket this.datagramSocket = new DatagramSocket(fromPort); reader = new BufferedReader(new InputStreamReader(System.in)); //从控制台读取数据 } catch (SocketException e) { e.printStackTrace(); } } @Override public void run() { try { while (true){ //2.封装数据包 String data = reader.readLine(); DatagramPacket datagramPacket = new DatagramPacket(data.getBytes(),0,data.getBytes().length, InetAddress.getByName(this.toIP),this.toPort); //3.发送数据包 datagramSocket.send(datagramPacket); if (data.equals("bye")){ break; } } } catch (IOException e) { e.printStackTrace(); } //4.关闭流 datagramSocket.close(); } }接收端
public class TalkReceive implements Runnable{ DatagramSocket datagramSocket = null; private int fromPort; private String fromMsg; public TalkReceive(int fromPort,String fromMsg) { this.fromPort = fromPort; this.fromMsg = fromMsg; //1.创建Socket try { datagramSocket = new DatagramSocket(fromPort); } catch (SocketException e) { e.printStackTrace(); } } @Override public void run() { while (true){ try { //2.接收数据包 byte[] buffer = new byte[1024]; DatagramPacket datagramPacket = new DatagramPacket(buffer,0,buffer.length); datagramSocket.receive(datagramPacket); //3.读取数据 byte[] datas = datagramPacket.getData(); String receiveData = new String(datas,0,datas.length); System.out.println(this.fromMsg + ":" + receiveData); if (receiveData.equals("bye")){ break; } } catch (IOException e) { e.printStackTrace(); } } //4.关闭流 datagramSocket.close(); } }学生端
public class TalkStudent { public static void main(String[] args) { new Thread(new TalkSend(5555,"localhost",8888)).start(); new Thread(new TalkReceive(9999,"老师")).start(); } }老师端
public class TalkTeacher { public static void main(String[] args) { new Thread(new TalkSend(6666,"localhost",9999)).start(); new Thread(new TalkReceive(8888,"学生")).start(); } }