一、UDP通信的过程就像是货运公司在两个码头间发送货物一样,
JDK中提供了DatagramPacket类、DatagramSocket类,用于封装UDP通信中发送或者接收的数据。
public class UDPsend { public static void main(String[] args) throws IOException { // 创建socket对象 DatagramSocket ds = new DatagramSocket(); Scanner sc = new Scanner(System.in); while (true) { // 创建数据包发送的数据 byte[] by = sc.next().getBytes(); //控制台输入什么 后面就能输出什么 InetAddress ine = InetAddress.getByName("127.0.0.1"); //发送的ip地址 以本机为准 假如要发送到别人电脑上 需要在同一局域网下 // 明确接受端的ip和端口号 DatagramPacket dp = new DatagramPacket(by, by.length, ine, 7777); // 发送 ds.send(dp); } } }
public class UDPRecieve { public static void main(String[] args) throws IOException { // 创建Socket 对象 明确端口号 DatagramSocket ds=new DatagramSocket(7777); //创建字节数组接受数据 byte[] by=new byte[1024]; while(true){ //创建数据包对象 DatagramPacket dp=new DatagramPacket(by, by.length); ds.receive(dp); //拆包 //获取数据长度 int length = dp.getLength(); //获取ip地址 String ip=dp.getAddress().getHostAddress(); //获取端口号 int port = dp.getPort(); System.out.println("ip地址为" + ip + "端口号" + port + "" + "发送的内容:" + new String(by, 0, length)); } } }
这样控制台输入什么 后面就能输出什么;打印结果如下:
欢迎各位大神指点和评论;
原文:https://www.cnblogs.com/lxc127136/p/12781526.html