栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

netty 使用说明

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

netty 使用说明


netty 使用说明

        

                

                                 

相关jar包

           

        
            io.netty
            netty-all
            4.1.77.Final
        

         

                   

                                 

启动器类

    

AbstractBootstrap

public abstract class AbstractBootstrap, C extends Channel> implements Cloneable {
    private static final Entry, Object>[] EMPTY_OPTION_ARRAY = new Entry[0];
    private static final Entry, Object>[] EMPTY_ATTRIBUTE_ARRAY = new Entry[0];
    volatile EventLoopGroup group;
    private volatile ChannelFactory channelFactory;
    private volatile SocketAddress localAddress;
    private final Map, Object> options = new LinkedHashMap();
    private final Map, Object> attrs = new ConcurrentHashMap();
    private volatile ChannelHandler handler;


    AbstractBootstrap() {
    AbstractBootstrap(AbstractBootstrap bootstrap) {


    public B group(EventLoopGroup group) {
    public B channel(Class channelClass) {
    public B channelFactory(io.netty.channel.ChannelFactory channelFactory) {
    public B handler(ChannelHandler handler) {
    public  B option(ChannelOption option, T value) {
    public  B attr(AttributeKey key, T value) {

    public B localAddress(SocketAddress localAddress) {
    public B localAddress(int inetPort) {
    public B localAddress(String inetHost, int inetPort) {
    public B localAddress(InetAddress inetHost, int inetPort) {

    public ChannelFuture bind() {
    public ChannelFuture bind(int inetPort) {
    public ChannelFuture bind(String inetHost, int inetPort) {
    public ChannelFuture bind(InetAddress inetHost, int inetPort) {
    public ChannelFuture bind(SocketAddress localAddress) {

    public B validate() {
    public ChannelFuture register() {

    public abstract B clone();
    public abstract AbstractBootstrapConfig config();

    abstract void init(Channel var1) throws Exception;

    final ChannelHandler handler() {
    final SocketAddress localAddress() {
    final ChannelFuture initAndRegister() {
    final Map, Object> attrs() {
    final Map, Object> options() {
    final ChannelFactory channelFactory() {

    final Map, Object> attrs0() {
    final Map, Object> options0() {
    final Entry, Object>[] newOptionsArray() {
    final Entry, Object>[] newAttributesArray() {


    static Entry, Object>[] newOptionsArray(Map, Object> options) {
    static Entry, Object>[] newAttributesArray(Map, Object> attributes) {
    static  Map copiedMap(Map map) {
    static void setAttributes(Channel channel, Entry, Object>[] attrs) {
    static void setChannelOptions(Channel channel, Entry, Object>[] options, InternalLogger logger) {

    private B self() {
    private ChannelFuture doBind(final SocketAddress localAddress) {
    private static void setChannelOption(Channel channel, ChannelOption option, Object value, InternalLogger logger) {
    private static void doBind0(final ChannelFuture regFuture, final Channel channel, final SocketAddress localAddress, final ChannelPromise promise) {

    public String toString() {


********
内部类:PendingRegistrationPromise

    static final class PendingRegistrationPromise extends DefaultChannelPromise {
        private volatile boolean registered;

        PendingRegistrationPromise(Channel channel) {
            super(channel);
        }

        void registered() {
        protected EventExecutor executor() {

           

Bootstrap:客户端启动器

public class Bootstrap extends AbstractBootstrap {
    private static final InternalLogger logger = InternalLoggerFactory.getInstance(Bootstrap.class);
    private static final AddressResolverGroup DEFAULT_RESOLVER;
    private final BootstrapConfig config = new BootstrapConfig(this);
    private volatile AddressResolverGroup resolver;
    private volatile SocketAddress remoteAddress;

    public Bootstrap() {
    private Bootstrap(Bootstrap bootstrap) {


    public Bootstrap validate() {
    public Bootstrap clone() {
    public Bootstrap clone(EventLoopGroup group) {
    public Bootstrap resolver(AddressResolverGroup resolver) {

    public Bootstrap remoteAddress(SocketAddress remoteAddress) {
    public Bootstrap remoteAddress(String inetHost, int inetPort) {
    public Bootstrap remoteAddress(InetAddress inetHost, int inetPort) {

    public ChannelFuture connect() {
    public ChannelFuture connect(String inetHost, int inetPort) {
    public ChannelFuture connect(InetAddress inetHost, int inetPort) {
    public ChannelFuture connect(SocketAddress remoteAddress) {
    public ChannelFuture connect(SocketAddress remoteAddress, SocketAddress localAddress) {

    public final BootstrapConfig config() {

    void init(Channel channel) {

    final SocketAddress remoteAddress() {
    final AddressResolverGroup resolver() {

    private ChannelFuture doResolveAndConnect(final SocketAddress remoteAddress, final SocketAddress localAddress) {
    private ChannelFuture doResolveAndConnect0(final Channel channel, SocketAddress remoteAddress, final SocketAddress localAddress, final ChannelPromise promise) {
    private static void doConnect(final SocketAddress remoteAddress, final SocketAddress localAddress, final ChannelPromise connectPromise) {

    static {
        DEFAULT_RESOLVER = DefaultAddressResolverGroup.INSTANCE;
    }
}

        

ServerBootstrap:服务端启动器

public class ServerBootstrap extends AbstractBootstrap {
    private static final InternalLogger logger = InternalLoggerFactory.getInstance(ServerBootstrap.class);
    private final Map, Object> childOptions = new LinkedHashMap();
    private final Map, Object> childAttrs = new ConcurrentHashMap();
    private final ServerBootstrapConfig config = new ServerBootstrapConfig(this);
    private volatile EventLoopGroup childGroup;
    private volatile ChannelHandler childHandler;

    public ServerBootstrap() {
    }


    public ServerBootstrap group(EventLoopGroup group) {
    public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup childGroup) {
    public  ServerBootstrap childOption(ChannelOption childOption, T value) {
    public  ServerBootstrap childAttr(AttributeKey childKey, T value) {
    public ServerBootstrap childHandler(ChannelHandler childHandler) {

    public ServerBootstrap validate() {
    public ServerBootstrap clone() {

    public final ServerBootstrapConfig config() {

    final ChannelHandler childHandler() {
    final Map, Object> childOptions() {
    final Map, Object> childAttrs() {

    void init(Channel channel) {
    private ServerBootstrap(ServerBootstrap bootstrap) {


**********
内部类:ServerBootstrapAcceptor

    private static class ServerBootstrapAcceptor extends ChannelInboundHandlerAdapter {
        private final EventLoopGroup childGroup;
        private final ChannelHandler childHandler;
        private final Entry, Object>[] childOptions;
        private final Entry, Object>[] childAttrs;
        private final Runnable enableAutoReadTask;

        ServerBootstrapAcceptor(final Channel channel, EventLoopGroup childGroup, ChannelHandler childHandler, Entry, Object>[] childOptions, Entry, Object>[] childAttrs) {

        public void channelRead(ChannelHandlerContext ctx, Object msg) {
        public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {

        private static void forceClose(Channel child, Throwable t) {

         

                

                                 

线程组

      

                

           

EventExecutorGroup

public interface EventExecutorGroup extends ScheduledExecutorService, Iterable {

    boolean isShuttingDown();

    Future terminationFuture();
    Future shutdownGracefully();
    Future shutdownGracefully(long var1, long var3, TimeUnit var5);

    EventExecutor next();
    Iterator iterator();

    Future submit(Runnable var1);
     Future submit(Runnable var1, T var2);
     Future submit(Callable var1);

     ScheduledFuture schedule(Callable var1, long var2, TimeUnit var4);
    ScheduledFuture schedule(Runnable var1, long var2, TimeUnit var4);
    ScheduledFuture scheduleAtFixedRate(Runnable var1, long var2, long var4, TimeUnit var6);
    ScheduledFuture scheduleWithFixedDelay(Runnable var1, long var2, long var4, TimeUnit var6);
}

          

EventLoopGroup

public interface EventLoopGroup extends EventExecutorGroup {

    EventLoop next();

    ChannelFuture register(Channel var1);
    ChannelFuture register(ChannelPromise var1);

}

          

NioEventLoopGroup

public class NioEventLoopGroup extends MultithreadEventLoopGroup {

    public NioEventLoopGroup() {
        this(0);
    }

    public NioEventLoopGroup(int nThreads) {
    public NioEventLoopGroup(ThreadFactory threadFactory) {

    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {
    public NioEventLoopGroup(int nThreads, Executor executor) {
    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory, SelectorProvider selectorProvider) {
    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory, SelectorProvider selectorProvider, SelectStrategyFactory selectStrategyFactory) {
    public NioEventLoopGroup(int nThreads, Executor executor, SelectorProvider selectorProvider) {
    public NioEventLoopGroup(int nThreads, Executor executor, SelectorProvider selectorProvider, SelectStrategyFactory selectStrategyFactory) {
    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory, SelectorProvider selectorProvider, SelectStrategyFactory selectStrategyFactory) {
    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory, SelectorProvider selectorProvider, SelectStrategyFactory selectStrategyFactory, RejectedExecutionHandler rejectedExecutionHandler) {
    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory, SelectorProvider selectorProvider, SelectStrategyFactory selectStrategyFactory, RejectedExecutionHandler rejectedExecutionHandler, EventLoopTaskQueueFactory taskQueueFactory) {
    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory, SelectorProvider selectorProvider, SelectStrategyFactory selectStrategyFactory, RejectedExecutionHandler rejectedExecutionHandler, EventLoopTaskQueueFactory taskQueueFactory, EventLoopTaskQueueFactory tailTaskQueueFactory) {


    public void setIoRatio(int ioRatio) {
    public void rebuildSelectors() {

    protected EventLoop newChild(Executor executor, Object... args) throws Exception {

         

                

                                 

channel 类型

    

常用channel类(4.1.77 oio不推荐使用)

                

NioSocketChannel:tcp客户端
NioServerSocketChannel:tcp服务端

NioDatagramChannel:udp客户端、服务端

NioSctpChannel:sctp客户端
NioSctpServerChannel:sctp服务端

          

              

                                 

配置参数

   

ChannelOption

public class ChannelOption extends AbstractConstant> {
    private static final ConstantPool> pool = new ConstantPool>() {
        protected ChannelOption newConstant(int id, String name) {
            return new ChannelOption(id, name);
        }
    };

    public static final ChannelOption ALLOCATOR = valueOf("ALLOCATOR");
    public static final ChannelOption RCVBUF_ALLOCATOR = valueOf("RCVBUF_ALLOCATOR");
    public static final ChannelOption MESSAGE_SIZE_ESTIMATOR = valueOf("MESSAGE_SIZE_ESTIMATOR");
    public static final ChannelOption CONNECT_TIMEOUT_MILLIS = valueOf("CONNECT_TIMEOUT_MILLIS");

    public static final ChannelOption MAX_MESSAGES_PER_WRITE = valueOf("MAX_MESSAGES_PER_WRITE");
    public static final ChannelOption WRITE_SPIN_COUNT = valueOf("WRITE_SPIN_COUNT");

    public static final ChannelOption WRITE_BUFFER_WATER_MARK = valueOf("WRITE_BUFFER_WATER_MARK");
    public static final ChannelOption ALLOW_HALF_CLOSURE = valueOf("ALLOW_HALF_CLOSURE");
    public static final ChannelOption AUTO_READ = valueOf("AUTO_READ");
    public static final ChannelOption AUTO_CLOSE = valueOf("AUTO_CLOSE");

    public static final ChannelOption SO_BROADCAST = valueOf("SO_BROADCAST");
    public static final ChannelOption SO_KEEPALIVE = valueOf("SO_KEEPALIVE");
    public static final ChannelOption SO_SNDBUF = valueOf("SO_SNDBUF");
    public static final ChannelOption SO_RCVBUF = valueOf("SO_RCVBUF");
    public static final ChannelOption SO_REUSEADDR = valueOf("SO_REUSEADDR");
    public static final ChannelOption SO_LINGER = valueOf("SO_LINGER");
    public static final ChannelOption SO_BACKLOG = valueOf("SO_BACKLOG");
    public static final ChannelOption SO_TIMEOUT = valueOf("SO_TIMEOUT");

    public static final ChannelOption IP_TOS = valueOf("IP_TOS");
    public static final ChannelOption IP_MULTICAST_ADDR = valueOf("IP_MULTICAST_ADDR");
    public static final ChannelOption IP_MULTICAST_IF = valueOf("IP_MULTICAST_IF");
    public static final ChannelOption IP_MULTICAST_TTL = valueOf("IP_MULTICAST_TTL");
    public static final ChannelOption IP_MULTICAST_LOOP_DISABLED = valueOf("IP_MULTICAST_LOOP_DISABLED");

    public static final ChannelOption TCP_NODELAY = valueOf("TCP_NODELAY");
    public static final ChannelOption TCP_FASTOPEN_CONNECT = valueOf("TCP_FASTOPEN_CONNECT");
    public static final ChannelOption TCP_FASTOPEN = valueOf(ChannelOption.class, "TCP_FASTOPEN");

    public static final ChannelOption SINGLE_EVENTEXECUTOR_PER_GROUP = valueOf("SINGLE_EVENTEXECUTOR_PER_GROUP");

    public static  ChannelOption valueOf(String name) {
    public static  ChannelOption valueOf(Class firstNameComponent, String secondNameComponent) {

    public static boolean exists(String name) {

    public void validate(T value) {
    private ChannelOption(int id, String name) {
 

                

                           

                                 

channel pipeline

        

通过channel接口获取对应的channel pileline,添加自定义的handler

                

          

ChannelInitailizer

@Sharable
public abstract class ChannelInitializer extends ChannelInboundHandlerAdapter {
    private static final InternalLogger logger = InternalLoggerFactory.getInstance(ChannelInitializer.class);
    private final Set initMap = Collections.newSetFromMap(new ConcurrentHashMap());

    public ChannelInitializer() {
    }

    protected abstract void initChannel(C var1) throws Exception;
                            //channel初始化

    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
    public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {

    public final void channelRegistered(ChannelHandlerContext ctx) throws Exception {

    private boolean initChannel(ChannelHandlerContext ctx) throws Exception {
    private void removeState(final ChannelHandlerContext ctx) {

         

Channel

public interface Channel extends AttributeMap, ChannelOutboundInvoker, Comparable {

    ChannelId id();
    EventLoop eventLoop();

    Channel parent();
    ChannelConfig config();

    boolean isOpen();
    boolean isRegistered();
    boolean isActive();
    boolean isWritable();

    long bytesBeforeUnwritable();
    long bytesBeforeWritable();

    SocketAddress localAddress();
    SocketAddress remoteAddress();

    ChannelFuture closeFuture();
    ChannelMetadata metadata();

    Channel.Unsafe unsafe();

    ChannelPipeline pipeline();    //获取channel pipeline

    ByteBufAllocator alloc();

    Channel read();
    Channel flush();

********
内部接口:Unsafe

    public interface Unsafe {

        Handle recvBufAllocHandle();

        SocketAddress localAddress();
        SocketAddress remoteAddress();

        void register(EventLoop var1, ChannelPromise var2);
        void deregister(ChannelPromise var1);

        void bind(SocketAddress var1, ChannelPromise var2);
        void connect(SocketAddress var1, SocketAddress var2, ChannelPromise var3);
        void disconnect(ChannelPromise var1);

        void close(ChannelPromise var1);
        void closeForcibly();

        void beginRead();
        void write(Object var1, ChannelPromise var2);
        void flush();

        ChannelPromise voidPromise();

        ChannelOutboundBuffer outboundBuffer();
    }
}

          

ChannelPipeline

public interface ChannelPipeline extends ChannelInboundInvoker, ChannelOutboundInvoker, Iterable> {

*******
add 操作

    ChannelPipeline addFirst(String var1, ChannelHandler var2);
    ChannelPipeline addFirst(EventExecutorGroup var1, String var2, ChannelHandler var3);

    ChannelPipeline addLast(String var1, ChannelHandler var2);
    ChannelPipeline addLast(EventExecutorGroup var1, String var2, ChannelHandler var3);

    ChannelPipeline addBefore(String var1, String var2, ChannelHandler var3);
    ChannelPipeline addBefore(EventExecutorGroup var1, String var2, String var3, ChannelHandler var4);

    ChannelPipeline addAfter(String var1, String var2, ChannelHandler var3);
    ChannelPipeline addAfter(EventExecutorGroup var1, String var2, String var3, ChannelHandler var4);

    ChannelPipeline addFirst(ChannelHandler... var1);
    ChannelPipeline addFirst(EventExecutorGroup var1, ChannelHandler... var2);

    ChannelPipeline addLast(ChannelHandler... var1);
    ChannelPipeline addLast(EventExecutorGroup var1, ChannelHandler... var2);


*******
remove 操作

    ChannelHandler remove(String var1);
    ChannelHandler removeFirst();
    ChannelHandler removeLast();

    ChannelPipeline remove(ChannelHandler var1);
     T remove(Class var1);


*******
replace 操作

    ChannelPipeline replace(ChannelHandler var1, String var2, ChannelHandler var3);
    ChannelHandler replace(String var1, String var2, ChannelHandler var3);
     T replace(Class var1, String var2, ChannelHandler var3);


*******
获取ChannelHandler

    ChannelHandler first();
    ChannelHandler last();
    ChannelHandler get(String var1);
     T get(Class var1);

*******
获取ChannelHandlerContext

    ChannelHandlerContext firstContext();
    ChannelHandlerContext lastContext();

    ChannelHandlerContext context(ChannelHandler var1);
    ChannelHandlerContext context(String var1);
    ChannelHandlerContext context(Class var1);


*******
触发channel事件

    ChannelPipeline fireChannelRegistered();
    ChannelPipeline fireChannelUnregistered();

    ChannelPipeline fireChannelActive();
    ChannelPipeline fireChannelInactive();

    ChannelPipeline fireExceptionCaught(Throwable var1);
    ChannelPipeline fireUserEventTriggered(Object var1);

    ChannelPipeline fireChannelRead(Object var1);
    ChannelPipeline fireChannelReadComplete();
    ChannelPipeline fireChannelWritabilityChanged();


*******
其余操作

    Channel channel();      //获取pipeline对应的channel

    List names();   //获取handler名称集合
    Map toMap();  //获取handler及其对应的name

    ChannelPipeline flush(); //刷新pipeline
}

            

ChannelHandler

public interface ChannelHandler {

    void handlerAdded(ChannelHandlerContext var1) throws Exception;
    void handlerRemoved(ChannelHandlerContext var1) throws Exception;

    
    @Deprecated
    void exceptionCaught(ChannelHandlerContext var1, Throwable var2) throws Exception;

    @Inherited
    @Documented
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Sharable {
    }
}

          

ChannelHandlerContext

public interface ChannelHandlerContext extends AttributeMap, ChannelInboundInvoker, ChannelOutboundInvoker {

    String name();
    Channel channel();
    boolean isRemoved();

    EventExecutor executor();
    ChannelHandler handler();

    ByteBufAllocator alloc();
    ChannelPipeline pipeline();

    ChannelHandlerContext read();
    ChannelHandlerContext flush();

    ChannelHandlerContext fireChannelRegistered();
    ChannelHandlerContext fireChannelUnregistered();

    ChannelHandlerContext fireChannelActive();
    ChannelHandlerContext fireChannelInactive();

    ChannelHandlerContext fireExceptionCaught(Throwable var1);
    ChannelHandlerContext fireUserEventTriggered(Object var1);

    ChannelHandlerContext fireChannelRead(Object var1);
    ChannelHandlerContext fireChannelReadComplete();
    ChannelHandlerContext fireChannelWritabilityChanged();


    
    @Deprecated
     Attribute attr(AttributeKey var1);

    
    @Deprecated
     boolean hasAttr(AttributeKey var1);
}

        

                  

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号