FireNio

构建通讯项目的异步 io 框架
授权协议 Apache
开发语言 Java
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 姚兴安
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

FireNio Project

FireNio 是基于 java nio 开发的一款可快速构建网络通讯项目的异步 IO 框架,其以简单易用的 API 和优良的性能深受开发者喜爱。

项目特色

快速入门

  • Maven引用:
<dependency>
  	<groupId>com.firenio</groupId>
  	<artifactId>firenio-all</artifactId>
  	<version>1.2.1</version>
  </dependency>
  • Simple Server:
public static void main(String[] args) throws Exception {

      IoEventHandle eventHandleAdaptor = new IoEventHandle() {

          @Override
          public void accept(Channel ch, Frame f) throws Exception {
              String text = f.getStringContent();
              f.setContent(ch.allocate());
              f.write("yes server already accept your message:", ch);
              f.write(text, ch);
              ch.writeAndFlush(f);
          }
      };
      ChannelAcceptor context = new ChannelAcceptor(8300);
      context.addChannelEventListener(new LoggerChannelOpenListener());
      context.setIoEventHandle(eventHandleAdaptor);
      context.addProtocolCodec(new LengthValueCodec());
      context.bind();
  }
  • Simple Client:
public static void main(String[] args) throws Exception {
      ChannelConnector context = new ChannelConnector("127.0.0.1", 8300);
      IoEventHandle eventHandle = new IoEventHandle() {
          @Override
          public void accept(Channel ch, Frame f) throws Exception {
              System.out.println();
              System.out.println("____________________" + f.getStringContent());
              System.out.println();
              context.close();
          }
      };

      context.setIoEventHandle(eventHandle);
      context.addChannelEventListener(new LoggerChannelOpenListener());
      context.addProtocolCodec(new LengthValueCodec());
      Channel ch = context.connect(3000);
      LengthValueFrame frame = new LengthValueFrame();
      frame.setString("hello server!");
      ch.writeAndFlush(frame);
  }

更多样例详见 {firenio-test}

演示及用例

License

FireNio is released under the Apache License 2.0.

  • 简介 IO是Java中重要特性,按照IO设备类型,分为磁盘IO和网络IO;按照IO实现方式,分为同步/异步IO、阻塞/非阻塞IO。 Java中有BIO、NIO(None-Block IO)、AIO三种IO类型分装,分别对应同步阻塞IO(BIO)、同步非阻塞IO(NIO)、异步非阻塞IO(AIO)。 IO类型详述 BIO详解 BIO全称为Blocking I/O, 是同步阻塞IO,最传统的IO模型,

 相关资料
  • 在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随

  • 开始 建构流程是整个项目最核心的地方之一,通过我们所熟知的 webpack,完成了 template 转换为 wxml 和 样式转换优化以及其他的若干代码的拼接压缩混淆等操作,最终使之可以运行在微信小程序的环境中。 如果你不了解什么是 webpack, 可以查看 webpack文档 。 用一个图来描述: app.vue & main.js ┌---------┐

  • 本文向大家介绍Python通过select实现异步IO的方法,包括了Python通过select实现异步IO的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python通过select实现异步IO的方法。分享给大家供大家参考。具体如下: 在Python中使用select与poll比起在C中使用简单得多。select函数的参数是3个列表,包含整数文件描述符,或者带有可返回文件描述符的f

  • 本文向大家介绍Python通过poll实现异步IO的方法,包括了Python通过poll实现异步IO的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python通过poll实现异步IO的方法。分享给大家供大家参考。具体分析如下: 在使用poll()后返回轮询对象,该对象支持以下方法: pollObj.register(fd,[,eventmask])第一个参数是注册新的文件描述符fd

  • 异步模块 异步模块与同步模块相反,指的是模块是在运行时才去异步加载然后再运行。 setTimeout(function(){ // 异步模块`async.js`在 1000ms 后加载,然后再运行 require.async('async.js', function(exports){ // 模块加载完成后,返回模块的导出 // exports

  • 本文向大家介绍Eclipse+Maven构建Hadoop项目的方法步骤,包括了Eclipse+Maven构建Hadoop项目的方法步骤的使用技巧和注意事项,需要的朋友参考一下 Maven 翻译为”专家”、”内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(Project Object Model 缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建