Netty的UDP通信心得
更新时间:2024-04-19 20:45:01 阅读量: 综合文库 文档下载
Netty的UDP通信心得
1.服务端代码
public final class QuoteOfTheMomentServer { private static final int PORT = Integer.parseInt(System.getProperty(\, \)); public static void main(String[] args) throws Exception { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap b = new Bootstrap(); b.group(group) .channel(NioDatagramChannel.class) .option(ChannelOption.SO_BROADCAST, true) .handler(new QuoteOfTheMomentServerHandler()); b.bind(PORT).sync().channel().closeFuture().await(); } finally { group.shutdownGracefully(); } } } 2.客户端代码
public final class QuoteOfTheMomentClient { static final int PORT = Integer.parseInt(System.getProperty(\, \)); public static void main(String[] args) throws Exception { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap b = new Bootstrap(); b.group(group) .channel(NioDatagramChannel.class) .option(ChannelOption.SO_BROADCAST, true) .handler(new QuoteOfTheMomentClientHandler()); Channel ch = b.bind(0).sync().channel(); // Broadcast the QOTM request to port 8080. ch.writeAndFlush(new DatagramPacket( Unpooled.copiedBuffer(\, CharsetUtil.UTF_8), new InetSocketAddress(\, PORT))).sync(); // QuoteOfTheMomentClientHandler will close the DatagramChannel when a // response is received. If the channel is not closed within 5 seconds, // print an error message and quit. if (!ch.closeFuture().await(5000)) { System.err.println(\); } } finally { group.shutdownGracefully(); } } } 注意channel(NioDatagramChannel.class)此句代表是UDP 3.可以不需要写编码和解码代码,直接写
(1)channel public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { cause.printStackTrace(); ctx.close(); } Handler即可,注意客户端抛异常时需要关闭
(2)注意包长度限制if (packet.content().readableBytes()< 最小包长度) { } return;// (3) 4.解包,
public void channelRead0(ChannelHandlerContext ctx, DatagramPacket packet) throws Exception
packet.content()即ByteBuf然后按照协议读取即可;
5.发包,解析完成后,按照协议组成ByteBuf发送数据包,如果一个ByteBuf不方便写代码就写多个ByteBuf,发送时按顺序放在参数里就行了
DatagramPacket data = new DatagramPacket(Unpooled.copiedBuffer(ByteBuf... buffers), packet.sender()); ctx.writeAndFlush(data);
6.调试和查看包
(1)Arrays.toString(ByteBuf.array())查看byte[]数组内容
(2)保留数据,注意最好使用byte[]或者转16进制字符串保存,最好不用字符串保留数据(字符串类型数据除外)
(3)数据不要进行过多的转换和操作,以免发生数据错误,造成调试问题
代码详见:http://www.tuicool.com/articles/bQF3qy
https://github.com/netty/netty/tree/4.0/example/src/main/java/io/netty/example/qotm
正在阅读:
Netty的UDP通信心得04-19
《教师礼仪规范》01-28
第4章 曲线和图形编辑05-23
杨柳青木板年画作文600字06-24
工厂常用礼仪规范05-20
基于51单片机的简易计算器设计04-05
2019医院办公室主任述职报告06-12
动词ing形式的用法04-16
高英复习 - 图文03-10
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 心得
- 通信
- Netty
- UDP
- 防排烟系统技术交底
- 爱爱医资源-2014内科主治专业知识试题
- 132型综掘机技术规格书
- 2016年二级建造师《施工管理》第二章同步练习
- 厂房改造工程施工组织设计
- DCOM配置和OPC 测试步骤
- 大理医学院专升本各专业《大学英语1》平时作业及答案
- 高频电路实验讲义
- 西方文化名著导读尔雅答案
- 浙江省金华十校2017届高考4月模拟考试英语试题 Word版含答案
- 水资源评价课程设计
- 浅谈中国写实油画的发展和创作2
- 2018语文高考作文话题材料预测及思路解析三
- 2019年中考英语必背词汇总结精华(含解析)
- 人教版小学五年级上册数学期末试卷
- 压力容器上机考试试题第四套
- 七年级数学数据的收集与表示单元测试
- 超能陆战队影评
- 班级管理工作量化及学生德育量化考核方案
- 高平驻村工作简报(第11期) - 农业考察 - 图文