2.5.1 成员属性

    2.5.2 配置接口

    方法说明
    public AioQuickServer setBannerEnabled(boolean bannerEnabled)服务启动时是否打印smart-socket banner
    public AioQuickServer setThreadNum(int num)Server服务线程数
    public AioQuickServer setReadBufferSize(int size)设置AioSession读缓存区长度
    public AioQuickServer setOption(SocketOption socketOption, V value)设置Socket的TCP参数配置

    2.5.3.1 start:启动AIO服务端

    初始化AIO服务的工作线程组并赋值于成员属性

    如果调用bind(SocketAddress local)方法,AsynchronousServerSocketChannel内部实际上执行的是bind(SocketAddress local, 0)。然而backlog的值小于1时,JDK会将其默认设置为50。 backlog维护了连接请求队列长度,如果队列满时收到连接指示,则拒绝该连接。举个例子:backlog设置为50,当前有50连接请求过来,服务端还未执行这些连接请求的accept方法。此时再有一个连接请求过来,则会被拒绝连接。除非请求队列中的某个连接完成accept操作并释放出队列资源,服务器才可接受新的连接。

    smart-socket通过启动AcceptThread线程同步监听客户端连接请求,一旦客户端连接上来便生成异步任务由WorkerThread线程池来初始化AioSession。所有的AioSession共用aioReadCompletionHandler、aioWriteCompletionHandler对象,这样可以减少服务端产生的对象数。

    AIO服务停止的逻辑很简单,关闭Channel通道,停止线程组。