以前项目中用到的netty服务端,现分享出来;
服务端主动发送数据给客户端端,本代码在NioServer类中维护了个map集合用来存储连接的客户端;map的key为客户端发送过来报文中的id(这里你也可以使用ctx.channel().id()相关业务自己实现);
1.netty版本4.1.25
<!-- https://mvnrepository.com/artifact/io.netty/netty-all -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.25.Final</version>
</dependency>
2.NioServer服务端
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @Title: NioServer
* @Description: nio服务端
* @date 2018/6/415:28
*/
public class NioServer {
// private static final Logger logger = LoggerFactory.getLogger(NioServer.class);
//连接map
public static Map<String, ChannelHandlerContext> map = new HashMap<String, ChannelHandlerContext>();
//默认端口
private Integer defaultPort=8000;
public void bind(Integer port) throws Exception {
//配置服务端的NIO线程组
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup