在查看本文前 您可以先看看我的文章
java UDP通信程序DatagramSocket数据发送 对UDP有一个基本的了解

然后这里我们就直接看代码了

我们先创建一个包 包下创建两个类 分别是
sendOut 发送类
参考代码如下

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class sendOut {
    public static void main(String args[]) throws IOException {
        //通过 DatagramSocket 类创建一个发送端的对象
        DatagramSocket ds = new DatagramSocket();
        byte[] data = "Hello World".getBytes();
        InetAddress addIp = InetAddress.getByName("ip地址");
        DatagramPacket dp = new DatagramPacket(data,data.length,addIp,6800);
        ds.send(dp);
        ds.close();
    }
}

sendOut 作为发送数据的端 会将数据发给接收端

注意 如果你是在和自己对接 这里的ip必须是你自己的 如果你是在和别人一起做 就可以写别人的电脑ip

然后 receive 数据接收类
参考代码如下

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class receive {
    public static void main(String args[]) throws IOException {
        //通过DatagramSocket类创建接收数据对象  指定了端口
        DatagramSocket ds = new DatagramSocket(6800);
        //定义一个字节数组 用于定义数据容量
        byte[] bys = new byte[1024];
        DatagramPacket dp = new DatagramPacket(bys,bys.length);
        //通过DatagramSocket创建的接收数据对象  接收数据
        ds.receive(dp);
        //利用字节数据接收数据
        byte[] data = dp.getData();
        //将字节数据转为字符串
        String datacon = new String(data);
        //输出接收到的数据
        System.out.println(datacon);
        //关闭接收端
        ds.close();
    }
}

注意这里的端口 必须和你发送端写的是一样的 因为如果你端口写的不一样 他也会找不到的

然后我们先运行 receive 接收端

java中怎么获取bean name Java中怎么获取DatagramPacket接收到数据_数据


没有任何反应 但跑起来了然后我们运行sendOut发送端

java中怎么获取bean name Java中怎么获取DatagramPacket接收到数据_java_02


也没有任何反应 但这是我们再去看接收端

java中怎么获取bean name Java中怎么获取DatagramPacket接收到数据_java中怎么获取bean name_03


很显然 数据是拿到了 但后面多出来很多奇奇怪怪的东西

这就涉及到 我们设置的容量 我们给的 1024 但确实我们压根不用那么多 我们就几个字 所以 这里我们要处理一下

我们将 receive类的 main方法修改成如下内容

public static void main(String args[]) throws IOException {
  //通过DatagramSocket类创建接收数据对象  指定了端口
    DatagramSocket ds = new DatagramSocket(6800);
    //定义一个字节数组 用于定义数据容量
    byte[] bys = new byte[1024];
    DatagramPacket dp = new DatagramPacket(bys,bys.length);
    //通过DatagramSocket创建的接收数据对象  接收数据
    ds.receive(dp);
    //利用字节数据接收数据
    byte[] data = dp.getData();
    //获取传来的数据数据长度
    int len = dp.getLength();
    //将字节数据转为字符串
    String datacon = new String(data,0,len);
    //输出接收到的数据
    System.out.println(datacon);
    //关闭接收端
    ds.close();
}

这里 我们通过 getLength 拿了一下 发送端发送的数据的实际长度
然后通过 String构造方法 去拿到所有有内容的部分 那么 我们按刚才的逻辑 再来一次

java中怎么获取bean name Java中怎么获取DatagramPacket接收到数据_数据_04


就没有任何问题了