简化版:
发送端:
- package com.kxg_03;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- /*
- * UDP协议发送数据:
- * 1.创建发送端Socket对象
- * 2.创建数据,并把数据打包
- * 3.调用Socket对象的发送方法发送数据包
- * 4.释放资源
- */
- public class SendDemo {
- public static void main(String[] args) throws IOException {
- // UDP协议利用DatagramSocket类创建Socket对象
- DatagramSocket ds = new DatagramSocket();
-
- // DatagramPacket类:此类表示数据报包
- // public DatagramPacket(byte[] buf,int length, InetAddress address,int
- // port)打包数据
- byte[] bys = "hello,UDP".getBytes();
- // 打包数据
- DatagramPacket dp = new DatagramPacket(bys, bys.length,
- InetAddress.getByName("10.164.22.254"), 48264);
- // 发送数据
- ds.send(dp);
- // 释放资源
- ds.close();
- }
- }
复制代码
接收端:
- package com.kxg_03;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- /*
- * UDP协议接受数据:
- * 1.创建接收端Socket对象
- * 2.创建一个空数据包(接收发来的数据)
- * 3.调用Socket对象的接收方法接受数据
- * 4.解析数据,并显示控制台
- * 5.释放资源
- */
- public class ReceiveDemo {
- public static void main(String[] args) throws IOException {
- // public DatagramSocket(int port):指定端口的Socket对象
- // 注意:需要和发送端端口一致
- DatagramSocket ds = new DatagramSocket(48264);
- // public DatagramPacket(byte[] buf,int length):用来接收长度为 length 的数据包
- byte[] bys = new byte[1024];
- DatagramPacket dp = new DatagramPacket(bys, bys.length);
- // public void receive(DatagramPacket p):从此套接字接收数据报包
- ds.receive(dp);
- // 解析数据包,并显示控制台
- // 获取发送者IP
- String ip = dp.getAddress().getHostAddress();
- // 转为字符串类型并输出
- String s = new String(dp.getData(), 0, dp.getLength());
- System.out.println(ip + ":" + s);
- // 释放资源
- ds.close();
- }
- }
复制代码
|