记录DatagramSocket的使用 | UDP协议下的数据传输 | java学习笔记

news2025/1/17 3:15:46

a端

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

/**
 * a端发送“今天星期几”给b端
 */
public class UDPa {
    public static void main(String[] args) throws IOException {
        //a端绑定9999端口————a端从9999接收消息
        DatagramSocket dgSocket = new DatagramSocket(9999);
        byte[] bytes = "今天星期几?".getBytes();
        // public DatagramPacket(byte buf[], int offset, int length,
        //                          InetAddress address, int port)
        DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length,
                InetAddress.getLocalHost(), 9998);
        dgSocket.send(packet);

        byte[] bytes2 = new byte[1024];
        //public DatagramPacket(byte buf[], int length)
        packet = new DatagramPacket(bytes2,bytes2.length);
        dgSocket.receive(packet);
        System.out.println("a接收到的信息:"+new String(packet.getData()));

        dgSocket.close(); // 记得关闭流!
    }
}

b端

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

/**
 * b端接收a端发来的消息,并打印
 *  b再发送给a:“星期一”
 */
public class UDPb {
    public static void main(String[] args) throws IOException {
        //b端绑定9998端口————b端从9998接收消息
        DatagramSocket dgSocket = new DatagramSocket(9998);
        byte[] bytes = new byte[1024];
        //public DatagramPacket(byte buf[], int length)
        DatagramPacket packet = new DatagramPacket(bytes,bytes.length);
        dgSocket.receive(packet);
        System.out.println("b接收到的信息:"+new String(packet.getData()));

        byte[] bytes2 = "今天星期一。".getBytes();
        // public DatagramPacket(byte buf[], int offset, int length,
        //                          InetAddress address, int port)
        packet = new DatagramPacket(bytes2, 0, bytes2.length,
                InetAddress.getLocalHost(), 9999);
        dgSocket.send(packet);

        dgSocket.close();
    }
}

运行结果

在这里插入图片描述
在这里插入图片描述

参考资料

https://www.bilibili.com/video/BV1fh411y7R8?p=678

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/998021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编辑器的缩略图实现原理

一、背景 部分 Web 版的 IDE 编辑器未曾实现缩略图功能,探寻一下缩略图的实现逻辑。以 VSCode 为例。 VSCode 的编辑器是monaco实现的,编辑器的编辑区都是采用的虚拟渲染,即仅渲染可视区的代码,可视区之外的动态去除 DOM 节点。…

Windows上安装和配置Apache Kafka

Apache Kafka是一个开源的流式平台,用于处理实时数据流。它可以用于各种用途,包括日志聚合、事件处理、监控等。本文将向您展示如何在Windows操作系统上安装和配置Apache Kafka。 步骤1:下载和解压Kafka 首先,让我们从Apache Ka…

adworld-web2

web2 GFSJ0627积分 2金币 2 91最佳Writeup由 Robert_Wei 提供 收藏 反馈 难度:2 方向:Web 题解数:108 解出人数:10185 题目来源: CTF 题目描述: 解密 题目场景: http://61.147.171.105:56591 100% 倒计时: 3时59分…

基于SIFT图像特征识别的匹配方法比较与实现

基于SIFT图像特征识别的匹配方法比较与实现 1 匹配器选择 目前常用的匹配器有 BFMatcher and FlannBasedMatcher 1.1 BFMatcher BFMatcher 全称是 Brute-Force Matcher(直译即为暴力匹配器) 大致原理: 对于 img1 中的每个描述符&#x…

LVS DR模式负载均衡群集部署

目录 1 LVS-DR 模式的特点 1.1 数据包流向分析 1.2 DR 模式的特点 2 DR模式 LVS负载均衡群集部署 2.1 配置负载调度器 2.1.1 配置虚拟 IP 地址 2.1.2 调整 proc 响应参数 2.1.3 配置负载分配策略 2.2 部署共享存储 2.3 配置节点服务器 2.3.1 配置虚拟 IP 地址 2.3.2…

初学unity开发学习笔记----第一天

以下是学习unity知识的心得,类似备忘录,肯定是存在有漏洞的地方或者专业名词使用不恰当的地方。。。 目标:编写小球wasd移动的效果 1.下载unity hub和unity引擎: (1).前往官网:Unity实时内容开发平台 -实时3D引擎、2D、VR&AR可视化数据…

【新版】系统架构设计师 - 软件架构设计<SOA与微服务>

个人总结,仅供参考,欢迎加好友一起讨论 架构 - 软件架构设计<SOA与微服务> 考点摘要 面向服务SOA(★★★★)微服务(★★★★) 基于/面向服务的(SOA) 在SO…

【新版】系统架构设计师 - 软件架构设计<新版>

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 软件架构设计<新版>考点摘要概念架构的 4 1 视图架构描述语言ADL基于架构的软件开发方法ABSDABSD的开发模型ABSDMABSD(ABSDM模型)的开发过程 软件架…

C++ 多线程(future篇)

引言 在前面介绍了启动线程,以及多线程下如何保证共享资源的竞争访问、线程同步这些。但是thread类无法访问从线程直接返回的值,如果要想获取线程的的执行结果,一般都是依靠全局或static变量,或是以实参传递的变量,然后…

C# 辗转相除法求最大公约数

辗转相除法求最大公约数 public static void CalcGCD(int largeNumber, int smallNumber, out int GCD){GCD 1;int remain -1;while (remain ! 0){remain largeNumber % smallNumber;GCD smallNumber;largeNumber smallNumber;smallNumber remain;}}

华为云云耀云服务器L实例评测|华为云耀云L搭建zerotier服务测试

0. 环境 - Win10 - 云耀云L服务器 1. 安装docker 检查yum源,本EulerOS的源在这里: cd /etc/yum.repos.d 更新源 yum makecache 安装 yum install -y docker-engine 运行测试 docker run hello-world 2. 运行docker镜像 默认配…

计算机专业毕业设计项目推荐03-Wiki系统设计与实现(JavaSpring+Vue+Mysql)

Wiki系统设计与实现(JavaSpringVueMysql) **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设…

大秒杀系统设计

参考链接:http://www.taodudu.cc/news/show-5770725.html?actiononClick 1. 一些数据 大家还记得2013年的小米秒杀吗?三款小米手机各11万台开卖,走的都是大秒系统,3分钟后成为双十一第一家也是最快破亿的旗舰店。 经过日志统计…

[超硬核] 5000字带走读DuckDB优化器之常量折叠与比较简化

DuckDB优化器之常量折叠与比较简化 本篇文章适合学习C的小伙伴,适合阅读开源项目的小伙伴,更适合学习数据库的小伙伴,欢迎与我一起探索优化器知识。 目录 DuckDB优化器之常量折叠与比较简化1.优化器规则2.表达式重写 2.1 重写/访问算子2.2 应…

makefile之目标文件生成

目标文件:源码经过编译还没有链接那些中间文件.linux .o文件 gcc $(CFLAGS) -c xxx.c -o xx.o include Makefile.config SRC : $(wildcard *.c wildcard ./audio_module/*.c) SRC_OBJ $(patsubst %.c,%.o,$(SRC))all:$(SRC_OBJ) $(info contents $(SRC))$(info objfiles $(SR…

Tomcat部署与调优

一、Tomcat概述: Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apac…

81 # 多语言

多语言实现方案 1、一个完整多个路径来实现多语言 2、前端来实现多语言(先配置好两种语言,动态切换内容),比如 i18n,vue-i18n 3、服务端的 header 来实现切换多语言 accept-language: zh-CN,zh;q0.9 const fs req…

台式万用表几位的概念以及NPLC的功能作用

数字万用表测量电流和电压的基本原理是通过检测传感器的电阻,电容,或电感等特性,将电流或电压转化为可以测量的电信号,然后这个电信号被转化为数字信号进行处理和显示。具体的,当测量电压时,万用表的输入端…

【SpringMVC】Jrebel 插件实现热部署与文件上传

目录 一、JRebel 1.1 Jrebel介绍 1.2 Jrebel插件下载 1.3 Jrebel服务下载并启动 1.4 在线生成GUID 1.5 JRebel激活 1.6 相关设置 注意❗ 二、文件上传、下载 2.1 导入pom依赖 2.2 配置文件上传解析器 2.3 文件上传表单设置 2.4 文件上传实现 2.5 文件下载实现 2…

[源码系列:手写spring] IOC第十四节:容器事件和事件监听器

代码分支 https://github.com/yihuiaa/little-spring/tree/event-and-event-listenerhttps://github.com/yihuiaa/little-spring/tree/event-and-event-listener 内容介绍 事件监听器机制 Spring的容器事件和事件监听器机制允许应用程序在容器中发生特定事件时执行自定义逻辑…