package com.ggnykj.smartems.cloud.server.udpserver.server;
import com.ggnykj.smartems.cloud.server.udpserver.handler.ChineseProverbServerHandler;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioDatagramChannel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.concurrent.*;
/**
* @author xk
* @date 2019/7/24 15:18
* udp数据接收处理服务,用于将udp数据发送到handler处理,解析表号,并且存储到rabbitmq
*/
@Service
@Component
public class UdpEventServer implements ApplicationRunner {
private Logger log = LoggerFactory.getLogger(UdpEventServer.class);
@Value("${udpServer.ports}")
private int port = 9701;
@Override
public void run(ApplicationArguments args) {
ThreadFactory factory = new ThreadFactoryBuilder().setNameFormat("wbAdjust-%d").build();
ExecutorService singleThreadPool = new ThreadPoolExecutor(1, 1, 0, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(1024), factory, new ThreadPoolExecutor.AbortPolicy());
singleThreadPool.execute(this::doWork);
}
/**
* @return void
* @Author xk
* @Param []
* @Description : 数据接收线程 方法实现udp上传数据的接收,并将实现数据处理handler
* @Date 2019/8/2 17:00
**/
private void doWork() {
try {
EventLoopGroup group = new NioEventLoopGroup();
Bootstrap b = new Bootstrap();
//由于我们用的是UDP协议,所以要用NioDatagramChannel来创建
b.group(group)
.channel(NioDatagramChannel.class)
.option(ChannelOption.SO_BROADCAST, true)//支持广播
.handler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast(new ChineseProverbServerHandler());
}
});
b.bind(port).sync().channel().closeFuture().await();
} catch (InterruptedException e) {
e.printStackTrace();
log.error("执行udp接收服务出错" + e.getMessage());
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
udp.rar (4个子文件)
udp
udpServer
ChineseProverbServerHandler.java 2KB
UdpEventServer.java 3KB
udpServer
ChineseProverbServerHandler.java 2KB
UdpEventServer.java 3KB
共 4 条
- 1
资源评论
mrxk_f
- 粉丝: 1
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功