|
- package com.telpo.dipperposition.server;
-
- import com.telpo.dipperposition.handler.ServerChannelInitializer;
- import com.telpo.dipperposition.service.IDipperDataAsyncTaskService;
- import io.netty.bootstrap.ServerBootstrap;
- import io.netty.channel.ChannelFuture;
- import io.netty.channel.ChannelOption;
- import io.netty.channel.EventLoopGroup;
- import io.netty.channel.nio.NioEventLoopGroup;
- import io.netty.channel.socket.nio.NioServerSocketChannel;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
-
- import java.net.InetSocketAddress;
-
-
- /**
- * @program: DipperPositionServer
- * @description: 北斗定位
- * @author: king
- * @create: 2021-01-13 14:01
- */
- @Slf4j
- public class DipperPositionServer {
-
- @Value(value = "${position.server.serverAddr}")
- private String serverAddr;
-
- @Value(value = "${position.server.timeAsycPort}")
- private String timeAsycServerPort;
-
- @Value(value = "${position.server.posAsycPort}")
- private String posAsycServerPort;
-
- @Value(value = "${position.server.starsAsycPort}")
- private String starsAsycServerPort;
-
- /*
- * 时间同步进程线程
- */
- public void startTimeAsnc() {
-
- //new 一个主线程组
- EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1);
- //new 一个工作线程组
- EventLoopGroup workThreadGroup = new NioEventLoopGroup(200);
- InetSocketAddress socketAddress = new InetSocketAddress(serverAddr, Integer.parseInt(timeAsycServerPort));
- ServerBootstrap bootstrap = new ServerBootstrap()
- .group(mainThreadGroup, workThreadGroup)
- .channel(NioServerSocketChannel.class)
- .childHandler(new ServerChannelInitializer())
- .localAddress(socketAddress)
- //设置队列大小
- .option(ChannelOption.SO_BACKLOG, 1024)
- // 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文
- .childOption(ChannelOption.SO_KEEPALIVE, true);
-
-
- //绑定端口,开始接收进来的连接
- try {
- ChannelFuture future = bootstrap.bind(socketAddress).sync();
- log.info("服务器启动开始监听端口: {}", socketAddress.getPort());
-
-
- future.channel().closeFuture().sync();
- } catch (InterruptedException e) {
- e.printStackTrace();
- } finally {
- //关闭主线程组
- mainThreadGroup.shutdownGracefully();
- //关闭工作线程组
- workThreadGroup.shutdownGracefully();
- }
- }
-
- /*
- * 时间同步进程线程
- */
- public void startPosAsnc() {
-
- //new 一个主线程组
- EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1);
- //new 一个工作线程组
- EventLoopGroup workThreadGroup = new NioEventLoopGroup(200);
- InetSocketAddress socketAddress = new InetSocketAddress(serverAddr, Integer.parseInt(posAsycServerPort));
- ServerBootstrap bootstrap = new ServerBootstrap()
- .group(mainThreadGroup, workThreadGroup)
- .channel(NioServerSocketChannel.class)
- .childHandler(new ServerChannelInitializer())
- .localAddress(socketAddress)
- //设置队列大小
- .option(ChannelOption.SO_BACKLOG, 1024)
- // 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文
- .childOption(ChannelOption.SO_KEEPALIVE, true);
-
-
- //绑定端口,开始接收进来的连接
- try {
- ChannelFuture future = bootstrap.bind(socketAddress).sync();
- log.info("服务器启动开始监听端口: {}", socketAddress.getPort());
-
-
- future.channel().closeFuture().sync();
- } catch (InterruptedException e) {
- e.printStackTrace();
- } finally {
- //关闭主线程组
- mainThreadGroup.shutdownGracefully();
- //关闭工作线程组
- workThreadGroup.shutdownGracefully();
- }
- }
-
-
- /*
- * 星历同步进程线程
- */
- public void startStarsAsnc() {
-
- //new 一个主线程组
- EventLoopGroup mainThreadGroup = new NioEventLoopGroup(1);
- //new 一个工作线程组
- EventLoopGroup workThreadGroup = new NioEventLoopGroup(200);
- InetSocketAddress socketAddress = new InetSocketAddress(serverAddr, Integer.parseInt(starsAsycServerPort));
- ServerBootstrap bootstrap = new ServerBootstrap()
- .group(mainThreadGroup, workThreadGroup)
- .channel(NioServerSocketChannel.class)
- .childHandler(new ServerChannelInitializer())
- .localAddress(socketAddress)
- //设置队列大小
- .option(ChannelOption.SO_BACKLOG, 1024)
- // 两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文
- .childOption(ChannelOption.SO_KEEPALIVE, true);
-
-
- //绑定端口,开始接收进来的连接
- try {
- ChannelFuture future = bootstrap.bind(socketAddress).sync();
- log.info("服务器启动开始监听端口: {}", socketAddress.getPort());
-
-
- future.channel().closeFuture().sync();
- } catch (InterruptedException e) {
- e.printStackTrace();
- } finally {
- //关闭主线程组
- mainThreadGroup.shutdownGracefully();
- //关闭工作线程组
- workThreadGroup.shutdownGracefully();
- }
- }
- }
|