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() {@Overridepublic 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() {@Overridepublic 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介绍相关推荐

  1. 网络编程 socket介绍

    Socket介绍 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对 ...

  2. 8个java 网络编程框架介绍

    1Apache MINA 2Grizzly 3Netty 4NIO Framework 5QuickServer 6xSocket 7IOServer 8XNIO 自从JDK1.4中有了NIO以后,这 ...

  3. Akka网络编程基本介绍

    Akka支持面向大并发后端服务程序,网络通信时服务端重要的一部分 网络编程: 1)TCP socket编程,时网络编程的主流,之所以叫tcp socket,时因为底层基于tcp/ip协议的 2)b/s ...

  4. java socket 高级编程_Java高级编程-网络编程详细介绍 (一)

    java.net 包中的类和接口提供了可用于低层和高层网络编程的 API.低层 API 可以让你直接访问网络协议,但是为此你不得不使用低层的 TCP 套接字和 UDP 数据包.高层的 API (如 U ...

  5. HSHA多线程网络编程模型介绍

     我在上一篇的分享<Leader/Follower多线程网络模型介绍>中详细介绍了LF多线程网络模型的原理和代码分析.它的思路是减少线程上下文切换和数据拷贝时间,通过角色转换,来提高处 ...

  6. 网络编程t-io介绍

    参考地址:https://www.t-io.org/ 常见应用场景 IM(官方提供了im例子,含web端) 实时监控 推送服务(已内置API) RPC 游戏 物联网(已有很多案例) 其它实时通讯类型的 ...

  7. 网络编程-Socket介绍

    Socket编程 Socket是介于应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口. Socket通信套路 1.当通过socket建立起2台机器的连接后, 2.本质上socket只干2件 ...

  8. 网络编程mina介绍

    mina和netty是同一个作者:向作者致敬! 服务器代码: 首先添加依赖: <dependency><groupId>org.slf4j</groupId>< ...

  9. 04.Java网络编程(转载)

    1.网络编程 1.1计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 按照计算机网络的定义,通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含 ...

最新文章

  1. Cloud Foundry平台中国唯一云供应商,阿里云持续链接Cloud Foundry/Kubernetes生态
  2. Ubuntu16.04删除客人会话
  3. java线程池游戏代码,Java游戏起步:(一)线程与线程池-JSP教程,Java技巧及代码...
  4. BP contact search in Fiori ui
  5. html标签属性和标签事件,HTML参考手册( 标签、属性和事件)
  6. go语言一天入门(下)
  7. Linux 下的进程间通信:管道、消息队列、共享文件、共享内存
  8. php生成字母数字订单,php生成唯一订单号可控制位数字母和数字
  9. Stackoverflow 最受关注的 10 个 Java 问题
  10. 判断某个值是否存在指定枚举类中
  11. linux 基础知识考试试题,Linux常识型试题
  12. VS2019搭建C语言开发环境(图文教程)
  13. Java学习从这里开始
  14. 安卓动画系统 - 安卓R
  15. 常用的几款幕墙BIM软件
  16. SMB2协议特性之oplock与lease(下)
  17. 【蓝桥杯】 历届试题 国王的烦恼(并查集)
  18. Wave Driver介绍-7(驱动中对音量的控制操作-非硬件音量控制)
  19. 软件腐化的七个特征之牢固性和粘滞性(设计模式原则的反面) (《敏捷软件开发》读书总结第二篇)
  20. 用纯C语言分别实现增量式与位置式的PID自整定算法

热门文章

  1. 使用Xshell登录AWS的EC2云服务器和开启EC2上允许root+密码方式登录
  2. 每日站立例会01,02,03
  3. 使用Python编写简单网络爬虫抓取视频下载资源
  4. [bzoj3676]回文串[后缀数组+Manacher]
  5. android.content.res.Resources$NotFoundException: String resource ID XXXX
  6. 10-1-Spring Boot综合项目实战-准备工作
  7. 至诚学院MATLAB第四次,MATLAB 第二次实验课课堂作业(4学时)
  8. oracle解锁用户实例,在Oracle 11G R2里启用示例帐户scott
  9. python循环次数查询_大数据量Mysql查询后经过循环使用python分片
  10. 让用户感到体贴登录页设计灵感