BaseIO是基于java nio开发的一款可快速构建网络通讯项目的异步IO框架,其以简单易用的API和优良的性能深受开发者喜爱。
支持协议扩展,已知的扩展协议有:
Redis协议(仅作测试),示例:详见 {baseio-test}
LineBased协议(基于换行符的消息分割),示例:详见 {baseio-test}
FixedLength协议(固定长度报文头),支持传输文本和二进制数据
HTTP1.1协议(lite),示例: https://www.generallycloud.com/
WebSocket协议,示例: https://www.generallycloud.com/web-socket/chat/index.html
Protobase(自定义协议),支持传输文本和二进制数据及混合数据
轻松实现断线重连(轻松实现心跳机制)
支持SSL(jdkssl,openssl)
压力测试
超过200W QPS的处理速度(Http1.1,I7-4790,16.04.1-Ubuntu) wrk压测
Maven引用:
<dependency> <groupId>com.generallycloud</groupId> <artifactId>baseio-all</artifactId> <version>3.2.6.RELEASE</version> </dependency>
Simple Server:
public static void main(String[] args) throws Exception { IoEventHandle eventHandle = new IoEventHandle() { @Override public void accept(NioSocketChannel channel, Frame frame) throws Exception { FixedLengthFrame f = (FixedLengthFrame) frame; frame.write("yes server already accept your message:", channel.getCharset()); frame.write(f.getReadText(), channel.getCharset()); channel.flush(frame); } }; ChannelContext context = new ChannelContext(8300); ChannelAcceptor acceptor = new ChannelAcceptor(context); context.addChannelEventListener(new LoggerChannelOpenListener()); context.setIoEventHandle(eventHandle); context.setProtocolCodec(new FixedLengthCodec()); acceptor.bind(); }
Simple Client:
public static void main(String[] args) throws Exception { IoEventHandle eventHandle = new IoEventHandle() { @Override public void accept(NioSocketChannel channel, Frame frame) throws Exception { FixedLengthFrame f = (FixedLengthFrame) frame; System.out.println(); System.out.println("____________________" + f.getReadText()); System.out.println(); } }; ChannelContext context = new ChannelContext(8300); ChannelConnector connector = new ChannelConnector(context); context.setIoEventHandle(eventHandle); context.addChannelEventListener(new LoggerChannelOpenListener()); context.setProtocolCodec(new FixedLengthCodec()); NioSocketChannel channel = connector.connect(); FixedLengthFrame frame = new FixedLengthFrame(); frame.write("hello server!", channel); channel.flush(frame); ThreadUtil.sleep(100); CloseUtil.close(connector); }
更多样例详见 {baseio-test}
BaseIO是基于java nio开发的一款可快速构建网络通讯项目的异步IO框架,其以简单易用的API和优良的性能深受开发者喜爱。 项目特色 支持协议扩展,已知的扩展协议有: Redis协议(仅作测试),示例:详见 {baseio-test} LineBased协议(基于换行符的消息分割),示例:详见 {baseio-test} FixedLength协议(固定长度报文头),支持传输文本和二进制数
软件介绍 BaseIO是基于java nio开发的一款可快速构建网络通讯项目的异步IO框架,其以简单易用的API和优良的性能深受开发者喜爱。 项目特色支持协议扩展,已知的扩展协议有:Redis协议(仅作测试),示例:详见 {baseio-test} LineBased协议(基于换行符的消息分割),示例:详见 {baseio-test} FixedLength协议(固定长度报文头),支持传输文本和二
在IO编程一节中,我们已经知道,CPU的速度远远快于磁盘、网络等IO。在一个线程中,CPU执行代码的速度极快,然而,一旦遇到IO操作,如读写文件、发送网络数据时,就需要等待IO操作完成,才能继续进行下一步操作。这种情况称为同步IO。 在IO操作的过程中,当前线程被挂起,而其他需要CPU执行的代码就无法被当前线程执行了。 因为一个IO操作就阻塞了当前线程,导致其他代码无法执行,所以我们必须使用多线程
Linux 异步IO 编译时链接实时库,使用选项 -lrt aiocbstruct aiocb是”asynchronous I/O control block”的缩写。 struct aiocb { /* The order of these fields is implementation-dependent */ int aio_fildes;
问题内容: 除了java.nio之外,java中还有什么用于异步io(基于套接字)的选项?java.nio还会在后台使用线程吗(就像我认为.NET的async-socket-library所做的那样,也许它已被更改),还是使用适当的select调用是“ true”的异步io? 问题答案: Java的NIO软件包(从Java6开始)通过Selector提供对非阻塞I / O的仅支持。希望Java7随
本文向大家介绍Node.js 的异步 IO 性能探讨,包括了Node.js 的异步 IO 性能探讨的使用技巧和注意事项,需要的朋友参考一下 Python 和 Ruby 也有这样的框架,但因为在实际使用中会不可避免地用到含有同步代码的库,因此没能成长起来,而在 Node.js 之前,JavaScript 的服务器端编程几乎是空白,所以 Node.js 才得以建立起了一个所有 IO 均为异步的代码库。
null
本文向大家介绍Android最基本的异步网络请求框架,包括了Android最基本的异步网络请求框架的使用技巧和注意事项,需要的朋友参考一下 本篇文章我们来一起写一个最基本的Android异步网络请求框架,借此来了解下Android中网络请求的相关知识。由于个人水平有限,文中难免存在疏忽和谬误,希望大家可以指出,谢谢大家。 1. 同步网络请求 以HTTP的GET请求为例,我们来介绍一下An