Эта статья основана на анализе финальной версии netty-4.1.8. В основном она предназначена для анализа процесса инициализации Netty Client.

  • Эта статья основана на анализе финальной версии netty-4.1.8. В основном она предназначена для анализа процесса инициализации Netty Client.
  • Поймите связь между Bootstrap, NioEventLoopGroup, NioEventLoop, NioSocketChannel.
  • Поймите связь между SelectorProvider, NioSocketChannelUnsafe, DefaultChannelPipeline, DefaultChannelPromise.
  • Поймите процесс инициализации и регистрации NioSocketChannel.
  • Поймите процесс подключения клиента Bootstrap.

основная концепция

  • Bootstrap содержит объект EventLoopGroup.
  • Объект EventLoopGroup содержит несколько объектов EventLoop.
  • Объект EventLoop содержит события, за обработку которых отвечает Selector.

  • SocketChannel содержит EventLoop, а соответствующий объект EventLoop записывается и привязывается.
  • SocketChannel содержит Unsafe, и все действия по чтению и записи выполняются Unsafe.
  • SocketChannel содержит объект DefaultChannelPipeline и поддерживает все объекты-обработчики.
  • Объект ch типа SelectableChannel класса SocketChannel реализует реальный объект соединения, созданный SelectorProvider.openSocketChannel().

Дело клиента Netty

public final class DiscardClient {

    static final boolean SSL = System.getProperty("ssl") != null;
    static final String HOST = System.getProperty("host", "127.0.0.1");
    static final int PORT = Integer.parseInt(System.getProperty("port", "8009"));
    static final int SIZE =…