Netty创建upd服务端
这里需要netty的jar包文件,我已经上传到百度云,提供下载:
这里使用的是netty5
http://pan.baidu.com/s/1hr2VBzY
服务端:
package com.use.socket.udp.Server;
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;
public class UdpServer {
// 相比于TCP而言,UDP不存在客户端和服务端的实际链接,因此
// 不需要为连接(ChannelPipeline)设置handler
public void run(int port)throws Exception{
EventLoopGroup group = new NioEventLoopGroup();
try {
Bootstrap b = new Bootstrap();
b.group(group).channel(NioDatagramChannel.class)
.option(ChannelOption.SO_BROADCAST,true)
.handler(new UdpServerHandler());
b.bind(port).sync().channel().closeFuture().await();
System.out.println("启动成功");
}
finally {
group.shutdownGracefully();
}
}
public static void main(String[] args) throws Exception{
int port = 8080;
if(args.length>0){
try{
port = Integer.parseInt(args[0]);
}
catch (NumberFormatException e){
e.printStackTrace();
}
}
new UdpServer().run(port);
}
}
package com.use.socket.udp.Server;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.channel.socket.DatagramPacket;
import io.netty.util.CharsetUtil;
import io.netty.util.internal.ThreadLocalRandom;
public class UdpServerHandler extends SimpleChannelInboundHandler<DatagramPacket>{
private static final String[] DICTIONARY={
"hello world",
"C++",
"C#",
"Java",
"python"
};
private String nextQuoto(){
// 线程安全的随机类:ThreadLocalRandom
int quoteId = ThreadLocalRandom.current().nextInt(DICTIONARY.length);
return DICTIONARY[quoteId];
}
@Override
public void messageReceived(ChannelHandlerContext channelHandlerContext,
DatagramPacket datagramPacket) throws Exception {
// 因为Netty对UDP进行了封装,所以接收到的是DatagramPacket对象。
String req = datagramPacket.content().toString(CharsetUtil.UTF_8);
System.out.println("udp service收到"+req);
/* if("aaa".equals(req)){
channelHandlerContext.writeAndFlush(new DatagramPacket(Unpooled.copiedBuffer(
"resourlt:"+nextQuoto(),CharsetUtil.UTF_8),datagramPacket.sender()));
}else{
channelHandlerContext.writeAndFlush(new DatagramPacket(Unpooled.copiedBuffer(
"resourlt:"+nextQuoto(),CharsetUtil.UTF_8),datagramPacket.sender()));
}*/
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx,Throwable cause)throws Exception{
ctx.close();
cause.printStackTrace();
}
}
可以使用工具测试:
查看eclipse中udp服务端数据:
可以接收到,自此,netty的udp服务端执行完毕
Netty创建upd服务端相关推荐
- Netty即是服务端又是客户端,服务端和客户端相互对应
Netty即是服务端又是客户端,服务端和客户端相互对应. 具体功能细节是: 上游有一个服务,会主动发送消息给我中间件平台.中间件平台既有服务端也有客户端.通过下游客户端连接进来的客户端和中间件传下去的 ...
- Netty搭建Http2服务端并支持TLS传输加密
Netty搭建Http2服务端并支持TLS传输加密 @Slf4j public class SslUtil {public static SslContext sslContext() {SslPro ...
- 关于SpringBoot整合Netty客户端和服务端实现JT808协议
关于SpringBoot整合Netty客户端和服务端实现JT808协议 最近做了一个使用netty实现交通部JT808协议的项目,对比了mina和netty两种框架的使用,先整理一下netty的实现过 ...
- 六步创建TCP服务端
//六步创建TCP服务端 #include<iostream> #include<Windows.h> using namespace std;int main() {//初始 ...
- linux netty udp服务端,Netty实现UDP服务端
### 前言 在之前的文章我已经讲过了利用`Netty`实现`UDP`客户端,大家有兴趣的话,可以参看下面文章: [Netty实现UDP客户端](https://www.jianshu.com/p/5 ...
- Netty源码 服务端的启动
最近一直在看netty,看完之后就想做点笔记.可是实在是太忙了,挤了还要几个晚上终于挤出来了 上图是服务端的实例代码.大致的流程先梳理一遍. 首先会执行 用于创建两个线程组,boosGroup用于接受 ...
- Netty客户端与服务端
1.Netty客户端 1.1 Bootstrap eventGroup channel remoteAddress option handler ClientHandlerInitializer in ...
- 基于Netty的UDP服务端开发
1.前言 之前基于Netty做了一套TCP与MQTT的服务端,随着系统接入的终端类型越来越多,出现了UDP通讯的设备,虽然这样的设备并非主流,而且通讯机制存在问题,为了考虑系统的兼容性,只能将整套服务 ...
- netty获取玩家chanel_基于netty的TCP服务端如何给客户端发送消息,但是如何拿到客户端连接时的SocketChannel呢,菜鸟求助?...
1.思路1 每个客户端连接时的SocketChannel保存在会话类sessionManager中的sessionIdMap中 问题: 1.客户端连接时确实将SocketChannel保存在会话类se ...
- Netty学习02--Netty3服务端
1.netty版本大致版本分为 netty3.x 和 netty4.x.netty5.x 2.netty可以运用在那些领域? 1)分布式进程通信 例如: hadoop.dubbo.akka等具有 ...
最新文章
- 2个YUV视频拼接技术
- 开源示波器osc_fun介绍、原理图学习
- Exact跻身全球发展最快的云企业行列
- 1-2. linux系统结构
- ios开发之 icon规范+启动图规范+启动页规范
- Visual C++——黄维通《 Visual C++面向对象与可视化程序设计》——例题9-3
- css写出三角形(兼容IE)
- arm-linux-gcc编译gtk程序,【又7】Arm 版GTK编译
- android handler作用,3.2.4 Handler的作用
- 【线上直播】:5G时代VR+8K直播 刷新你的视界认知
- C#与halcon联合开发——内存溢出
- 蓝桥杯试题 算法提高 数组求和
- Node.js: NPM 使用介绍
- 特斯拉部分车型将逐渐搭载磷酸铁锂电池,比亚迪有望成为其电池供应商
- js获取的值传到java_使用GraalVM从javascript将变量参数传递给java函数
- 艺术字体手绘,如何进行创作呢
- 2021Java实现关注公众号登陆网站
- EXCEL中的MID函数查询身份证年龄
- 题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
- 飞算soflu软件机器人-低代码的未来
热门文章
- 小说阅读网站设计HTML,HTML5+CSS3网站设计基础教程
- html打开txt文件怎么打开是乱码了,使用记事本打开TXT文件变乱码的解决办法
- ubuntu 18 安装显卡驱动时卡死及系统重装
- 英语句子组织的5个步骤
- 数字资产期权新手入门手册 | TokenInsight
- mysql 枚举索引_MySQL 索引总结
- 学习总结以及对接下来的规划
- 番外9福冈·狂野老司机告诉你如果装AI·1· ——混合现实科幻《地与光》
- 我的理想是学计算机,我的理想作文(精选10篇)
- 六月我在工作中蜕变,勤奋小人打架终于赢了