Package org.aoju.bus.socket
Class AioQuickClient
java.lang.Object
org.aoju.bus.socket.AioQuickClient
-
Constructor Summary
ConstructorsConstructorDescriptionAioQuickClient(String host, int port, Protocol<T> protocol, MessageProcessor<T> messageProcessor) 当前构造方法设置了启动Aio客户端的必要参数,基本实现开箱即用。 -
Method Summary
Modifier and TypeMethodDescriptionfinal AioQuickClient绑定本机地址、端口用于连接远程服务final AioQuickClientconnectTimeout(int timeout) 客户端连接超时时间,单位:毫秒final AioQuickClientsetBufferFactory(BufferFactory bufferFactory) 设置内存池的构造工厂。final AioQuickClientsetBufferPagePool(BufferPool bufferPool) 设置内存池。final <V> AioQuickClientsetOption(SocketOption<V> socketOption, V value) 设置Socket的TCP参数配置 AIO客户端的有效可选范围为: 1.final AioQuickClientsetReadBufferFactory(VirtualFactory readBufferFactory) final AioQuickClientsetReadBufferSize(int size) 设置读缓存区大小final AioQuickClientsetWriteBuffer(int bufferSize, int bufferCapacity) 设置输出缓冲区容量final voidshutdown()停止客户端服务.final void立即关闭客户端final AioSessionstart()启动客户端。<A> voidstart(A attachment, CompletionHandler<AioSession, ? super A> handler) 采用异步的方式启动客户端start(AsynchronousChannelGroup asynchronousChannelGroup) 启动客户端。<A> voidstart(AsynchronousChannelGroup asynchronousChannelGroup, A attachment, CompletionHandler<AioSession, ? super A> handler) 采用异步的方式启动客户端
-
Constructor Details
-
AioQuickClient
public AioQuickClient(String host, int port, Protocol<T> protocol, MessageProcessor<T> messageProcessor) 当前构造方法设置了启动Aio客户端的必要参数,基本实现开箱即用。- Parameters:
host- 远程服务器地址port- 远程服务器端口号protocol- 协议编解码messageProcessor- 消息处理器
-
-
Method Details
-
start
public <A> void start(A attachment, CompletionHandler<AioSession, ? super A> handler) throws IOException采用异步的方式启动客户端- Type Parameters:
A- 附件对象类型- Parameters:
attachment- 可传入回调方法中的附件对象handler- 异步回调- Throws:
IOException
-
start
public <A> void start(AsynchronousChannelGroup asynchronousChannelGroup, A attachment, CompletionHandler<AioSession, ? super A> handler) throws IOException采用异步的方式启动客户端- Type Parameters:
A- 附件对象类型- Parameters:
asynchronousChannelGroup- 通信线程资源组attachment- 可传入回调方法中的附件对象handler- 异步回调- Throws:
IOException
-
start
启动客户端。 在与服务端建立连接期间,该方法处于阻塞状态。直至连接建立成功,或者发生异常。 该start方法支持外部指定AsynchronousChannelGroup,实现多个客户端共享一组线程池资源,有效提升资源利用率。- Parameters:
asynchronousChannelGroup- IO事件处理线程组- Returns:
- 建立连接后的会话对象
- Throws:
IOException- IOException- See Also:
-
getSession
-
start
启动客户端。 本方法会构建线程数为2的asynchronousChannelGroup,并通过调用start(AsynchronousChannelGroup)启动服务。- Returns:
- 建立连接后的会话对象
- Throws:
IOException- IOException- See Also:
-
shutdown
public final void shutdown()停止客户端服务. 调用该方法会触发AioSession的close方法,并且如果当前客户端若是通过执行start()方法构建的,同时会触发asynchronousChannelGroup的shutdown动作。 -
shutdownNow
public final void shutdownNow()立即关闭客户端 -
setReadBufferSize
设置读缓存区大小- Parameters:
size- 单位:byte- Returns:
- 当前AIOQuickClient对象
-
setOption
设置Socket的TCP参数配置 AIO客户端的有效可选范围为: 1. StandardSocketOptions.SO_SNDBUF 2. StandardSocketOptions.SO_RCVBUF 3. StandardSocketOptions.SO_KEEPALIVE 4. StandardSocketOptions.SO_REUSEADDR 5. StandardSocketOptions.TCP_NODELAY- Type Parameters:
V- 泛型- Parameters:
socketOption- 配置项value- 配置值- Returns:
- 当前客户端实例
-
bindLocal
绑定本机地址、端口用于连接远程服务- Parameters:
local- 若传null则由系统自动获取port- 若传0则由系统指定- Returns:
- 当前客户端实例
-
setBufferPagePool
设置内存池。 通过该方法设置的内存池,在AioQuickClient执行shutdown时不会触发内存池的释放。 该方法适用于多个AioQuickServer、AioQuickClient共享内存池的场景。 在启用内存池的情况下会有更好的性能表现- Parameters:
bufferPool- 内存池对象- Returns:
- 当前客户端实例
-
setBufferFactory
设置内存池的构造工厂。 通过工厂形式生成的内存池会强绑定到当前AioQuickClient对象, 在AioQuickClient执行shutdown时会释放内存池。 在启用内存池的情况下会有更好的性能表现- Parameters:
bufferFactory- 内存池工厂- Returns:
- 当前客户端实例
-
setWriteBuffer
设置输出缓冲区容量- Parameters:
bufferSize- 单个内存块大小bufferCapacity- 内存块数量上限- Returns:
- 当前客户端实例
-
connectTimeout
客户端连接超时时间,单位:毫秒- Parameters:
timeout- 超时时间- Returns:
- 当前客户端实例
-
setReadBufferFactory
-