netty tcp udp监听同一端口

文章目录

  • 前言
  • 一、tcp和udp区别
  • 二、netty创建服务
    • 1.tcp服务
    • 2.udp服务
  • 总结


前言

经常写tcp,最近需求突然要搞udp和tcp监听同一端口号。


一、tcp和udp区别

TCP 是面向连接的,UDP 是面向无连接的
UDP程序结构较简单
TCP 是面向字节流的,UDP 是基于数据报的
TCP 保证数据正确性,UDP 可能丢包
TCP 保证数据顺序,UDP 不保证

二、netty创建服务

1.tcp服务

代码如下(示例):


public class TcpServer {
   
 
    public static void main(String[] args) throws Exception {
   
        //创建bossGroup,workGroup
        //bossGroup只处理连接请求,真正的和客户的业务处理会交给workGroup完成
        // 两个都是无限循环
        //bossGroup,workerGroup含有的子线程(NioEventLoopGroup)默认有cpu核数*2
        // 指定bossgroup一个线程
        EventLoopGroup bossGroup = new NioEventLoopGroup(1);
        EventLoopGroup workerGroup = new NioEventLoopGroup();
        try {
   
            // 创建服务器端的启动对象,配置参数
            ServerBootstrap bootstrap = new ServerBootstrap();
            bootstrap.group(bossGroup, workerGroup)//设置两个线程组
                    .channel(NioServerSocketChannel.class)//服务器端通道
                    .option(ChannelOption.SO_BACKLOG, 128)//设置线程队列得到的连接数
                    .childOption(ChannelOption.SO_KEEPALIVE, true)//设置保持活动链接状态
                    .childHandler(new ChannelInitializer<SocketChannel>() {
   //匿名创建一个测试对象
                        //给pipeline设置处理器
                        @Override
                        protected void initChannel(SocketChannel socketChannel) {
   
                            //给我们的workerGroup的EventLoop对应的管道设置处理器
                            socketChannel.pipeline().addLast(new NettyServerHandler());
                        }
                    });
            System.out.println("........tcp服务监听启动.....");
            // 绑定一个端口并且同步,生成一个channelFuture对象
            //启动服务器并绑定端口
            ChannelFuture cf = bootstrap.bind(

你可能感兴趣的:(java)