初识UDP

今天看了一下,UDP的相关内容  感觉挺有意思的。

原理就是建立两个线程,一个接收消息  一个发送消息

启动类:

 1 package chatTest;
 2 
 3 public class ChatStart {
 4     public static void main(String[] args) {
 5 //        开启两个线程一个用来发送消息  一个来接受消息
 6         MsgSender msgSender = new MsgSender();
 7         MsgRecevier msgRecevier = new MsgRecevier();
 8         msgRecevier.start();
 9         msgSender.start();
10     }
11 }

发送消息类:

 1 package chatTest;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStreamReader;
 6 import java.net.DatagramPacket;
 7 import java.net.DatagramSocket;
 8 import java.net.InetAddress;
 9 
10 public class MsgSender extends Thread {
11     @Override
12     public void run() {
13         // 建立UDP服务
14         DatagramSocket socket;
15         try {
16             socket = new DatagramSocket();
17             // 准备数据,将其封装到数据包中发送
18             BufferedReader bReader = new BufferedReader(new InputStreamReader(
19                     System.in));
20             String line = bReader.readLine();
21             while (line != null) {
22                 DatagramPacket packet = new DatagramPacket(line.getBytes(),
23                         line.getBytes().length,
24                         InetAddress.getByName("192.168.1.255"), 9999);
25                 socket.send(packet);
26                 line = bReader.readLine();
27             }
28             // 关闭资源
29             socket.close();
30         } catch (IOException e) {
31             e.printStackTrace();
32         }
33     }
34 
35 }

接受消息类:

 1 package chatTest;
 2 
 3 import java.io.IOException;
 4 import java.net.DatagramPacket;
 5 import java.net.DatagramSocket;
 6 
 7 public class MsgRecevier extends Thread {
 8     @Override
 9     public void run() {
10 
11         try {
12             // 建立UDP服务 监听一个端口
13             DatagramSocket socket = new DatagramSocket(9999);
14             // 准备空的数据包存储数据
15             byte[] buf = new byte[1024];
16             DatagramPacket packet = new DatagramPacket(buf, buf.length);
17             Boolean flag = true;
18             while (flag) {
19                 socket.receive(packet);
20                 System.out.println(packet.getAddress().getHostAddress() + ":\t"
21                         + new String(buf, 0, packet.getLength()));
22             }
23             // 关闭资源
24             socket.close();
25         } catch (IOException e) {
26             e.printStackTrace();
27         }
28     }
29 
30 }

 

posted @ 2017-03-15 20:32  Ascetic  阅读(258)  评论(0编辑  收藏  举报