UDP是一种无连接的传输层协议,提供快速不可靠的服务。
一、发送端
* 创建UDP发送端
* 步骤:
* 1.建立UDP的Socket服务
* 2.将要发送的数据封装到数据包中
* 3.通过UDP的socket服务将数据包发送出去
* 4.关闭socket服务
1 public class UDPSendDemo2 {
2
3 public static void main(String[] args) throws IOException {
4 System.out.println("发送端启动了...");
5
6 DatagramSocket ds=new DatagramSocket();//建立socket服务
7 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//读取键盘录入
8 String line=null;
9 while((line=br.readLine())!=null){
10 byte[] buf=line.getBytes();
11 DatagramPacket dp=new DatagramPacket(buf, buf.length,InetAddress.getByName("wsw"),10100);//封装数据包
12 ds.send(dp);//发送数据
13
14 if("over".equals(line))//当录入over时,关闭发送端
15 break;
16 }
17 ds.close();//关闭资源
18 }
19 }
二、接收端
* 建立UDP接收端
* 步骤:
* 1.建立UDP的Socket服务,因为要接收数据,必须明确接收的端口号
* 2.创建数据包,用来存储接收到的数据,方便用数据包对象的方法解析这些数据
* 3.使用socket服务的receive方法接收这些数据
* 4.通过数据包中的方法解析这些数据
* 5.关闭资源
1 public class UDPReceDemo2 {
2
3 public static void main(String[] args) throws IOException {
4 System.out.println("接收端启动了...");
5
6 while(true){//不停接收数据
7 DatagramSocket ds=new DatagramSocket(10100);
8 byte[] buf=new byte[1024];
9 DatagramPacket dp=new DatagramPacket(buf, buf.length);
10 ds.receive(dp);//接收数据,是阻塞式方法
11
12 //解析数据 源ip地址,源端口号,发送的内容
13 String ip=dp.getAddress().getHostAddress();
14 int port=dp.getPort();
15 String text=new String(buf,0,dp.getLength());
16 System.out.println(ip+":"+port+":"+text);
17 if(text.equals("over")){
18 System.out.println(ip+"...已经离开聊天室");
19 }
20 ds.close();//关闭资源
21 }
22 }
23 }
测试运行: