面向无连接的通信协议,发送方只管发,接收方只管接!
先得让接收端运行
接收端
package cn.itcast.demo1;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/*
* 实现UDP接收端
* 依赖于两个类
* 1.数据封装的类:java.net.DatagramPacket 接收数据
* 2.数据传输的类:java.net.DatagramSocket 接收数据包
*
* 实现步骤:
* 1.创建DatagramSocket对象,绑定一个端口号
* 2.创建字节数组,接收数据
* 3.调用DatagramPacket对象
* 4.调用DatagramSocket的recive(DatagramPacket)方法,将接收到的数据放在数据包中
* 5.拆包:
* 发送方的IP地址
* 接收到的字节数
* 发送放的端口号
* 6.关闭资源
*/
public class UDPReciver {
public static void main(String[] args) throws IOException {
//1.创建DatagramSocket对象,绑定一个端口号
DatagramSocket ds = new DatagramSocket(6000);
//2.创建字节数组,接收数据
byte[] bt = new byte[1024*64];
//3.调用DatagramPacket对象
DatagramPacket dp = new DatagramPacket(bt, bt.length);
//4.调用DatagramSocket的recive(DatagramPacket)方法,将接收到的数据放在数据包中
ds.receive(dp);
//5.拆包
//获取字节个数
int length = dp.getLength();
//发送方的IP地址
String address = dp.getAddress().getHostAddress();
//获取发送方的端口
int port = dp.getPort();
System.out.println(new String(bt,0,length));
System.out.println(address);
System.out.println(port);
ds.close();
}
}
发送端
package cn.itcast.demo1;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
/*
* 实现UDP协议的发送端
* 依赖于两个类
* 1.数据封装的类:java.net.DatagramPacket 将你的数据包装
* 2.数据传输的类:java.net.DatagramSocket 将你的数据包发出
*
* 实现步骤:
* 1.创建DatagramPacket对象,封装数据、地址和端口号
* 2.创建DatagramSocket
* 3.调用DatagramSocket的send方法,发送数据包
* 4.关闭资源
*/
public class UDPSender {
public static void main(String[] args) throws IOException {
//1.创建DatagramPacket对象,封装数据、地址和端口号
byte[] date = "123".getBytes();
InetAddress inet = InetAddress.getByName("127.0.0.1");
//构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
DatagramPacket dp = new DatagramPacket(date,date.length,inet,6000);
//2.创建DatagramSocket
DatagramSocket ds = new DatagramSocket();
//3.调用DatagramSocket的send方法,发送数据包
ds.send(dp);
ds.close();
}
}