Netty实现UDP

2023-10-27

最近写的tcp和udp

以前经常写tcp,这次突然多一个udp。

这次就献上udpserver的代码

 

import io.netty.bootstrap.Bootstrap;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioDatagramChannel;
 
/**
 * 19.2.15
 */
public class UdpServer {
	public static void main(String[] args) {
	    try {
	        Bootstrap b = new Bootstrap();
	        EventLoopGroup group = new NioEventLoopGroup();
	        b.group(group)
	                .channel(NioDatagramChannel.class)
	                .option(ChannelOption.SO_BROADCAST, true)
	                .handler(new UdpServerHandler());

	        b.bind(2557).sync().channel().closeFuture().await();
	    } catch (InterruptedException e) {
	        e.printStackTrace();
	    }
	}
}

 

import com.wlzl.wq.util.Effect;
import com.wlzl.wq.util.HexByte;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.channel.socket.DatagramPacket;

public class UdpServerHandler extends SimpleChannelInboundHandler<DatagramPacket> {

	@Override
	protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket packet) throws Exception {
		//做类型转换,将msg转换成Netty的ByteBuf对象。
		//ByteBuf类似于JDK中的java.nio.ByteBuffer 对象,不过它提供了更加强大和灵活的功能。
		ByteBuf buf = packet.copy().content();

		//通过ByteBuf的readableBytes方法可以获取缓冲区可读的字节数,
		//根据可读的字节数创建byte数组
		byte[] req = new byte[buf.readableBytes()];
		//通过ByteBuf的readBytes方法将缓冲区中的字节数组复制到新建的byte数组中
		buf.readBytes(req);
		//通过new String构造函数获取请求消息。
		String body = HexStringUtils.bytesToHexString(req).toUpperCase();
		System.out.println(body);//打印收到的信息
			//向客户端发送消息
	        String json = "hello world!!";
	        // 由于数据报的数据是以字符数组传的形式存储的,所以传转数据
	        byte[] bytes = json.getBytes("UTF-8");
	        DatagramPacket data = new DatagramPacket(Unpooled.copiedBuffer(bytes), packet.sender());
	        ctx.writeAndFlush(data);//向客户端发送消息
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Netty实现UDP 的相关文章

  • 如何在 Eclipse 中用阿拉伯语读写

    我在 eclipse 中编写了这段代码来获取一些阿拉伯语单词 然后打印它们 public class getString public static void main String args throws Exception PrintS
  • 通过 InjectMocks Spy 注入对象

    我需要对一个类运行一系列单元测试 该类具有 Autowired Logger 实现 实现的基本思想是 Mock Logger logger InjectMocks TestedClass tested 但我想保存日志输出功能 Mockito
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • 使用 Spring 时实例化对象,用于测试与生产

    使用 Spring 时 应该使用 Spring 配置 xml 来实例化生产对象 并在测试时直接实例化对象 这样的理解是否正确 Eg MyMain java package org world hello import org springf
  • MI设备中即使应用程序被杀死,如何运行后台服务

    您好 我正在使用 alaram 管理器运行后台服务 它工作正常 但对于某些 mi 设备 后台服务无法工作 我使用了服务 但它无法工作 如何在 mi 中运行我的后台服务 MI UI有自己的安全选项 所以你需要的不仅仅是上面提到的粘性服务 你需
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • spring - 强制 @Autowired 字段的 cglib 代理

    我有混合堆栈 EJB 和 Spring 为了将 Spring 自动装配到 EJB 我使用SpringBeanAutowiringInterceptor 不确定这是否会影响我遇到的问题 在尝试通过以下方式自动装配 bean 时 Scope p
  • 为什么我在 Mac 上看到“java.lang.reflect.InaccessibleObjectException: Unable to make private java.nio.DirectByteBuffer(long,int)accessibl

    我已经在工作中愉快地构建代码好几天了 但突然我的一个项目 不是全部 失败并出现此错误消息 看看下面的答案吧 我是如何修复它的 起初我用谷歌搜索 看到很多有这个问题的人正在使用 Java 16 但我认为 错误 我正在使用 Java 11 因为
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • 如何将实例变量传递到 Quartz 作业中?

    我想知道如何在 Quartz 中外部传递实例变量 下面是我想写的伪代码 如何将 externalInstance 传递到此作业中 public class SimpleJob implements Job Override public v
  • Java中有类似分支/跳转表的东西吗?

    Java有类似分支表或跳转表的东西吗 分支表或跳转表是 根据维基百科 http en wikipedia org wiki Branch table 用于描述使用分支指令表将程序控制 分支 转移到程序的另一部分 或可能已动态加载的不同程序
  • Java 推断泛型类型

    我正在寻找类似的推断捕获泛型类型的概念 类似于以下方法片段 但不是捕获泛型类型的类 public

随机推荐

  • cisco 3640 voip配置实例解析

    下面是一个Cisco 3640的VOIP配置 对方的结构是台北和上海两地做VOIP 后接阿尔卡特的PBX 这是我亲手做的 里面有很多有注意的地方 与大家一起分享快乐 如有看不懂的地方请问我 还有我加的注解 Taipei sh run Bui
  • Android_切换主题或皮肤的实现方式

    1 简介 使用自定义主题或者皮肤 可以将相关配置 颜色 大小等等 放在一个新的apk压缩文件中 目录结构保持一致 该apk文件放在任意可以访问到的目录即可 类似 system framework framework res apk 可根据软
  • Linux:haproxy部署--搭建nginx集群

    Haproxy介绍 Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一 它支持双机热备 虚拟主机 基于TCP和HTTP应用代理等功能 其配置简单 而且拥有很好的对服务器节点的健康检查功能 相当于keepalived健康检
  • 编写一求两个数的最大值的函数Max,要求用模板实现对任意数据类型数据都可应用该函数求取结果

    编写一求两个数的最大值的函数Max 要求用模板实现对任意数据类型数据都可应用该函数求取结果 在main 函数中分别用整型 实型 字符型数据进行测试 include
  • 打开用友软件提示 SQL Server口令怎么办?(含多种版本SQL Server数据库的安装方法)

    转自 http www ufidawhy com jcufida SQLServerkl html 用友财务软件提示 SQL Server口令怎么办 具体提示如下 由于SQL Server的超级用户口令修改过 用友网络财务软件不能连接到SQ
  • 清除Tomcat日志

    清除Tomcat日志 Tomcat日志清理日常必不可少 这里记录一下平时使用命令 0 查日志文件占空间大小 cd wltiot tomcat apache tomcat 7 0 99 logs ll ah 1 清除catalina out文
  • chrome控制台修改JS的变量值

    最近突然闲着没事想起来之前一个前端比较好玩的东西 然后记录一下 注注注 我是专业后台搬砖工 这是修改前的 所有流程都是正常走的 if里的也没有打印出来 然后 我们改改 坏笑 先进控制台在判断那块打出断点 然后找到右边的Global 所有的变
  • Ubuntu22.04安装CUDA和cuDNN详细过程记录

    文章目录 一 安装显卡驱动 二 安装CUDA 三 安装cuDNN 四 更换cuDNN版本 参考资料 一 安装显卡驱动 1 终端中输入以下命令获取显卡和驱动信息 ubuntu drivers devices 以我自己的机器为例 显示结果如下
  • C++杂谈 为什么类的空指针对象可以访问类某些的成员函数

    class TestObject public TestObject std cout lt lt TestObject lt lt std endl TestObject std cout lt lt TestObject lt lt s
  • 华为HCIE云计算之FC添加ipsan数据存储

    华为HCIE云计算之FC添加ipsan数据存储 一 登录华为OceanStor仿真器 二 在数据存储创建LUN 1 创建硬盘域 2 创建存储池 3 创建LUN和LUN组 4 创建主机和主机组 5 创建映射关系 三 配置数据存储的端口IP 1
  • opencv进阶19-基于opencv 决策树cv::ml::DTrees 实现demo示例

    opencv 中创建决策树 cv ml DTrees类表示单个决策树或决策树集合 它是RTrees和 Boost的基类 CART是二叉树 可用于分类或回归 对于分类 每个叶子节点都 标有类标签 多个叶子节点可能具有相同的标签 对于回归 每个
  • GPT-4 最强竞争对手,Claude 杀疯了!

    这是 进击的Coder 的第 851 篇技术分享 作者 小 G 来源 GitHubDaily 阅读本文大概需要 6 分钟 在今年早些时候 ChatGPT Bard Claude 等大语言模型 在 AI 领域呈三权鼎立之势 无人能出其右 被视
  • 如何解析hdlc帧7E头(帧格式分析实例)

    0 前言 作为一名嵌入式工程师 经常需要通过UART与外设打交道 而对于串行总线来说 往往我们必须要进行帧同步 通常的做法是把信令包含在2个0x7E的中间 除此之外还有HDLC PPP等协议也会到有此应用场景 那么如何从这些数据帧中提取有效
  • pip3 config 更新源问题

    pip源配置文件可以放置的位置 Linux Unix etc pip con pip pip conf 每一个我都找了都没有 所以我是在这个文件夹中创建的pip conf文件 config pip pip conf Mac OSX Libr
  • mybatis插入数据的时候获取自增的id

    1 自增的是int类型
  • 数据挖掘实验(八):DBSCAN聚类 R语言

    一 实验目的 了解DBSCAN算法基本原理 编写代码并实现DBSCAN算法对数据的聚簇 二 实验步骤 采用的数据集 R语言factoextra包里的multishapes数据集 函数首先确定两个参数 1 epsilon 在一个点周围邻近区域
  • 在sql查询中使用表变量实现上一条下一条记录

    SET ANSI NULLS ON GO SET QUOTED IDENTIFIER ON GO Author
  • 1046 划拳

    划拳是古老中国酒文化的一个有趣的组成部分 酒桌上两人划拳的方法为 每人口中喊出一个数字 同时用手比划出一个数字 如果谁比划出的数字正好等于两人喊出的数字之和 谁就赢了 输家罚一杯酒 两人同赢或两人同输则继续下一轮 直到唯一的赢家出现 下面给
  • Qt开发 — QProcess执行带管道的shell命令

    Qt开发 QProcess执行带管道的shell命令 简述 在嵌入式开发过程中 很容易遇到一些需要开辟新的进程 而新的进程里面又需要强制关闭父进程的操作 不如程序中需要读写SD卡 但是有时程序中又需要格式化SD卡 这就遇到问题 需要在SD卡
  • Netty实现UDP

    最近写的tcp和udp 以前经常写tcp 这次突然多一个udp 这次就献上udpserver的代码 import io netty bootstrap Bootstrap import io netty channel ChannelOpt