UDP知识点

一、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));
        }
    }
}
复制代码
这样控制台输入什么 后面就能输出什么;打印结果如下:

 

 

 

 欢迎各位大神指点和评论;

 

posted @   丿狂奔的蜗牛  阅读(178)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示