Netty入门

介绍

netty是基于Java NIO网络提供客户端/服务端框架,它非常方便开发底层的非阻塞的网络应用。

netty拥有如下特性:

  1. 易用性:比Java NIO更易使用,提供针对很多使用场景的示例
  2. 最小化依赖:仅仅需要一个依赖即可得到整个框架
  3. 高性能:提供比核心Java API更高的吞吐量以及低延迟,由于内部资源池的概念使得它更容易扩展
  4. 安全性:提供SSL、TLS、StartTLS支持

Netty构建块

基于Java的网络应用中,核心的组成是类Socket,而Netty提供的Channel接口提供了API极大的简化了直接与Socket工作的复杂性,例如,为了与TCP/IP工作,可以使用SocketChannel。SocketChannel表示客户端与服务端的TCP连接。

接口ClientSocketChannelFactory创建SocketChannel,SocketChannel接口继承Channel接口,SocketChannel拥有SocketChannelConfig

SocketChannels是由EventLoop管理,EventLoop查询新事件,例如,来到的数据,当一个事件发生时,最终会传递到合适的Handler,例如,一个ChannelHandler

为了共享资源,例如,线程,netty分组每个EventLoop到一个EventLoopGroup。
最后,使用BootStrap类来启动Netty和其资源

示例1

我们以一个简单的Server服务为例,说明一下创建过程。

  1. 添加netty依赖
<dependencies>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
        <version>4.1.52.Final</version>
    </dependency>
</dependencies>
  1. 代码
  2. 创建EchoServer主类
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;

public class EchoServer {

    public static void main(String[] args) {

        EventLoopGroup bossGroup = new NioEventLoopGroup(1);
        EventLoopGroup workerGroup = new NioEventLoopGroup();

        EchoServerHandler echoServerHandler = new EchoServerHandler();

        try {
            ServerBootstrap b = new ServerBootstrap();
            b.group(bossGroup, workerGroup)
                    .channel(NioServerSocketChannel.class)
                    .handler(new LoggingHandler(LogLeve
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值