• 【转】Netty系列之Netty是什么


    Netty是什么

    大概用Netty的,无论新手还是老手,都知道它是一个“网络通讯框架”。所谓框架,基本上都是一个作用:基于底层API,提供更便捷的编程模型。那么”通讯框架”到底做了什么事情呢?回答这个问题并不太容易,我们不妨反过来看看,不使用netty,直接基于NIO编写网络程序,你需要做什么(以Server端TCP连接为例,这里我们使用Reactor模型):

    1. 监听端口,建立Socket连接
    2. 建立线程,处理内容
      1. 读取Socket内容,并对协议进行解析
      2. 进行逻辑处理
      3. 回写响应内容
      4. 如果是多次交互的应用(SMTP、FTP),则需要保持连接多进行几次交互
    3. 关闭连接

    建立线程是一个比较耗时的操作,同时维护线程本身也有一些开销,所以我们会需要多线程机制,幸好JDK已经有很方便的多线程框架了,这里我们不需要花很多心思。 此外,因为TCP连接的特性,我们还要使用连接池来进行管理:

    1. 建立TCP连接是比较耗时的操作,对于频繁的通讯,保持连接效果更好
    2. 对于并发请求,可能需要建立多个连接
    3. 维护多个连接后,每次通讯,需要选择某一可用连接
    4. 连接超时和关闭机制

    想想就觉得很复杂了!实际上,基于NIO直接实现这部分东西,即使是老手也容易出现错误,而使用Netty之后,你只需要关注逻辑处理部分就可以了。

    体验Netty

    这里我们引用Netty的example包里的一个例子,一个简单的EchoServer,它接受客户端输入,并将输入原样返回。其主要代码如下:

     

    这里EchoServerHandler是其业务逻辑的实现者,大致代码如下:

     

    还是挺简单的,不是吗?

  • 相关阅读:
    洛谷 P1244 青蛙过河
    洛谷 P1004 方格取数
    洛谷 CF894A QAQ
    【题解】洛谷 P5506 封锁
    洛谷 P3884 [JLOI2009]二叉树问题
    Bzoj4894 天赋
    Bzoj4893 项链分赃
    Bzoj3583 杰杰的女性朋友
    POJ3233 Matrix Power Series
    UOJ#204 【APIO2016】Boat
  • 原文地址:https://www.cnblogs.com/kofxxf/p/4103460.html
Copyright © 2020-2023  润新知