1 public class TalkReceive implements Runnable {
2 DatagramSocket socket = null;
3 private int port;
4 private String msgFrom;
5
6 public TalkReceive(int port,Stri睿共享ng 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.receive(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 sock睿共享et.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.println(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 new Thread(new TalkSend(555,"localhost",8888)).start();
4 睿共享 new Thread(new TalkReceive(9999,"学生")).start();
5 }
6 }