1 public class TalkReceive implements Runnable { 2 DatagramSocket socket = null; 3 private int port; 4 pr睿共享 ivate String msgFrom; 5 6 public TalkReceive(int port,String msgFrom) { 7 this.port = port; 8 this.msgFrom = msgFrom; 9 try { 10 socket = new DatagramSocket(port); 11 } catch (SocketException e) { 12 e.printStackTrace(); 13 } 14 } 15 16 @Override 17 public void run() { 18 19 while(true) { 20 try { 21 byte[] container = new byte[1024]; 22 23 DatagramPacket packet = new DatagramPacket(container,0,container.length); 24 socket.rec睿共享 eive(packet); 25 26 //断开连接 bye 27 byte[] data = packet.getData(); 28 String receiveData = new String(data, 0, data.length); 29 30 System.out.println(msgFrom+":"+receiveData); 31 32 if (receiveData.equals("bye")){ 33 break; 34 } 35 } catch (IOException e) { 36 e.printStackTrace(); 37 } 38 } 39 socket.close(); 40 } 41 42 }
1 public class TalkSend implements Runnable { 2 DatagramSocket socket = null; 3 BufferedReader reader = null; 4 private int fromPort; 5 private String toIp; 6 private int toPort; 7 8 public TalkSend(int fromPort, String toIp, int toPort) { 9 this.fromPort = fromPort; 10 this.toIp = toIp; 11 this.toPort = toPort; 12 13 try{ 14 socket = new DatagramSocket(fromPort); 15 reader = new BufferedReader(new InputStreamReader(System.in)); 16 17 }catch(Exception e){ 18 e.printStackTrace(); 19 } 20 } 21 22 @Override 23 public void run() { 24 while(true) { 25 try { 26 String data = reader.readLine(); 27 byte[] datas = data.getBytes(); 28 29 DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress(this.toIp, this.toPort));//创建packet相当于创建集装箱 30 socket.send(packet);//接货 31 // byte[] arr = packet.getData();//获取数据 32 // int len = packet.getLength(); //获取有效的字节个数 33 // System.out.print睿共享 ln(new String(arr,0,len)); 34 if (data.equals("bye")) { 35 break; 36 } 37 } catch (Exception e) { 38 e.printStackTrace(); 39 } 40 } 41 socket.close(); 42 } 43 44 }
1 public class TalkStudent { 2 public static void main(String[] args) { 3 new Thread(new TalkSend(777,"localhost睿共享 ",9999)).start(); 4 new Thread(new TalkReceive(8888,"老师")).start(); 5 } 6 }
1 public class TalkTeacher { 2 public static void main(String[] args) { 3 n睿共享 ew Thread(new TalkSend(555,"localhost",8888)).start(); 4 new Thread(new TalkReceive(9999,"学生")).start(); 5 } 6 }