【Netty 网络通信】启动客户端连接服务端实现通信

简介: 【1月更文挑战第9天】【Netty 网络通信】启动客户端连接服务端实现通信

Netty概述:

https://netty.io/

Netty是一个异步事件驱动的网络应用框架,用于快速开发可维护的高性能服务端和客户端。Netty封装了JDKNIO

如何启动客户端连接到服务端?

引入Maven依赖:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.49.Final</version>
</dependency>


创建客户端代码,连接Netty服务端,并向服务端发送数据:

// 1.创建客户端的启动类:
new Bootstrap()
    // 2.指定EventLoop事件轮询器分组:
    .group(new NioEventLoopGroup())
    // 3.指定SocketChannel通道实现:
    .channel(NioSocketChannel.class)
    // 4.添加处理器:
    .handler(new ChannelInitializer<NioSocketChannel>() {
        // 连接建立完成之后被调用:
        @Override
        protected void initChannel(NioSocketChannel nioSocketChannel) throws Exception {
            nioSocketChannel.pipeline().addLast(new StringEncoder());
        }
    })
    // 5.连接到服务器:
    .connect("localhost", 8080)
    // 指定阻塞方法,直到连接建立完成
    .sync()
    // 获取连接对象,通过连接对象发送数据
    .channel()
    // 6.向服务端发送数据:
    .writeAndFlush("hell,Netty!");


在上述代码中,需要替换YourClientHandler为你自己定义的处理器,该处理器将处理接收到的数据。可以通过继承ChannelInboundHandlerAdapter类并重写相应的方法来实现自己的处理器。

  1. 创建 EventLoopGroup: 在客户端中,你需要创建两个 EventLoopGroup 实例,一个用于处理客户端的连接,另一个用于处理I/O操作。EventLoopGroup 是一个处理事件循环的线程池。通常,NioEventLoopGroup 是用于客户端的良好选择。
EventLoopGroup group = new NioEventLoopGroup();
  1. 创建 Bootstrap:Bootstrap 类被用于设置客户端。你需要配置它以指定使用的 EventLoopGroup、通道类型、连接选项等。
Bootstrap bootstrap = new Bootstrap();
bootstrap.group(group)
         .channel(NioSocketChannel.class)
         .option(ChannelOption.TCP_NODELAY, true)
         .handler(new ChannelInitializer<SocketChannel>() {
             @Override
             protected void initChannel(SocketChannel ch) {
                 // 添加客户端处理器
                 ch.pipeline().addLast(new YourClientHandler());
             }
         });
  1. 连接到服务端: 使用 connect 方法连接到远程服务器。
ChannelFuture future = bootstrap.connect(serverHost, serverPort).sync();

这将返回一个 ChannelFuture 对象,它表示连接的异步操作。通过调用 sync() 方法,你可以阻塞直到连接完成。

  1. 等待连接关闭: 使用 closeFuture().sync() 来阻塞,直到连接关闭。
future.channel().closeFuture().sync();
  1. 释放资源: 在关闭应用程序之前,确保关闭 EventLoopGroup 以释放所有资源。
group.shutdownGracefully();
相关文章
|
24天前
|
网络协议 安全 5G
网络与通信原理
【10月更文挑战第14天】网络与通信原理涉及众多方面的知识,从信号处理到网络协议,从有线通信到无线通信,从差错控制到通信安全等。深入理解这些原理对于设计、构建和维护各种通信系统至关重要。随着技术的不断发展,网络与通信原理也在不断演进和完善,为我们的生活和工作带来了更多的便利和创新。
61 3
|
8天前
|
传感器 自动驾驶 物联网
探秘 5G 核心网络之 5G RAN:开启高速通信新时代
探秘 5G 核心网络之 5G RAN:开启高速通信新时代
29 4
|
1月前
|
机器学习/深度学习 人工智能 算法
|
18天前
|
物联网 5G 数据中心
|
22天前
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
20 5
|
28天前
|
安全 网络架构
无线网络:连接未来的无形纽带
【10月更文挑战第13天】
64 8
|
29天前
|
网络协议 安全 数据安全/隐私保护
网络协议:互联网通信的基石
【10月更文挑战第12天】
70 1
|
1月前
|
网络协议 Linux 应用服务中间件
Socket通信之网络协议基本原理
【10月更文挑战第10天】网络协议定义了机器间通信的标准格式,确保信息准确无损地传输。主要分为两种模型:OSI七层模型与TCP/IP模型。
|
11天前
|
边缘计算 5G 数据处理
5G网络能耗管理:绿色通信的实践
【10月更文挑战第30天】
31 0
|
1月前
|
安全 物联网 5G
无线网络技术:5G之后的通信革命
【10月更文挑战第16天】本文探讨了5G之后无线网络技术的发展趋势,涵盖5G-A、Wi-Fi 7及未来通信技术展望。5G-A提升了网络速度、时延和连接数,Wi-Fi 7则在性能和可靠性上大幅跃升,未来通信技术将朝向更高速度、更低延迟、更广覆盖方向发展。