smart-socket v1.4.8 发布,国产 Java AIO 通信框架
smart-socket 是一款国产开源的 Java AIO 框架,追求代码量、性能、稳定性、接口设计各方面都达到极致。如果 smart-socket 对您有一丝帮助,请 Star 一下我们的项目并持续关注;如果您对 smart-socket 并不满意,那请多一些耐心,smart-socket 一直在努力变得更好。
Maven
<!-- https://mvnrepository.com/artifact/org.smartboot.socket/aio-core --> <dependency> <groupId>org.smartboot.socket</groupId> <artifactId>aio-core</artifactId> <version>1.4.8</version> </dependency>
更新内容:
- 重构服务端线程模型,相比之前版本简化很多。
- 服务端支持自定义 backlog。
- 新增状态机:ACCEPT_EXCEPTION,当服务端处理客户端的 accpet 事件异常时触发。
- 其他代码上小优化。
快速上手:
- 定义协议
public class StringProtocol implements Protocol<String> { @Override public String decode(ByteBuffer readBuffer, AioSession<String> session) { byte length = readBuffer.get(readBuffer.position()); if (length+1 < readBuffer.remaining()) { return null; } byte[] b = new byte[readBuffer.get()]; readBuffer.get(b); return new String(b); } }
-
启动服务端
public class Server { public static void main(String[] args) throws IOException { AioQuickServer<String> server = new AioQuickServer<String>(8080, new StringProtocol(), new MessageProcessor<String>() { public void process(AioSession<String> session, String msg) { System.out.println("接受到客户端消息:" + msg); byte[] response = "Hi Client!".getBytes(); byte[] head = {(byte) response.length}; try { session.writeBuffer().write(head); session.writeBuffer().write(response); } catch (IOException e) { e.printStackTrace(); } } public void stateEvent(AioSession<String> session, StateMachineEnum stateMachineEnum, Throwable throwable) { } }); server.start(); } }
- 启动客户端
public class Client { public static void main(String[] args) throws InterruptedException, ExecutionException, IOException { AioQuickClient<String> client = new AioQuickClient<String>("127.0.0.1", 8080, new StringProtocol(), new MessageProcessor<String>() { public void process(AioSession<String> session, String msg) { System.out.println(msg); } public void stateEvent(AioSession<String> session, StateMachineEnum stateMachineEnum, Throwable throwable) { } }); AioSession<String> session = client.start(); byte[] msgBody = "Hello Server!".getBytes(); byte[] msgHead = {(byte) msgBody.length}; try { session.writeBuffer().write(msgHead); session.writeBuffer().write(msgBody); session.writeBuffer().flush(); } catch (IOException e) { e.printStackTrace(); } } }
想要从事物联网开发,又苦于某些通信框架学习成本太高的朋友,不妨来试试 smart-socket。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
你应该了解的 Java SPI 机制
前言 不知大家现在有没有去公司复工,我已经在家办公将近 3 周了,同时也在家呆了一个多月;还好工作并没有受到任何影响,我个人一直觉得远程工作和 IT 行业是非常契合的,这段时间的工作效率甚至比在办公室还高,同时由于我们公司的业务在海外,所以疫情几乎没有造成太多影响。 扯远了,这次主要是想和大家分享一下 Java 的 SPI 机制。周末没啥事,我翻了翻我之前的写的博客 《设计一个可拔插的 IOC 容器》,发现当时的实现并不那么优雅。 还没看过的朋友的我先做个前景提要,当时的需求: 我实现了一个类似于的 SpringMVC 但却很轻量的 http 框架 cicada,其中当然也需要一个 IOC 容器,可以存放所有的单例 bean。 这个 IOC 容器的实现我希望可以有多种方式,甚至可以提供一个接口供其他人实现;当然切换这个 IOC 容器的过程肯定是不能存在硬编码的,也就是这里所提到的可拔插。 当我想使用 A 的实现方式时,我就引入 A 的 jar 包,使用 B 时就引入 B 的包。 先给大家看看两次实现的区别,先从代码简洁程度来说就是 SPI 更胜一筹。 什么是 SPI 在具体分析之前还是...
- 下一篇
Gear-Lib 1.1.9 发布,适合 IOT 开发的 C 库
新版本 1.1.9更新日志如下: 新增darray库,支持动态数组 更新rtmp库,改名为rtmpc,并优化数据多次拷贝的问题 更新queue库,修复一读多写操作 更新media-io库,修复时间戳和视频格式等问题 支持windows下nmake的编译 支持CMake编译 Gear Lib 是一组面向IOT及网络协议的C基础库,支持嵌入式,以及网络服务开发等场景,并已支持windows/ubuntu/rasberrypi/esp32开发板,内容包括: 数据结构 libdict: key-value 库 libhash: linux 内核原生哈希库 libringbuffer: 循环缓冲 libqueue: 数据队列 librbtree: linux 内核 rbtree libsort: libvector: 容器库 libmacro: 通用宏定义 libdarray: 动态数组 网络库 librtsp: RTSP 协议,适合 IPCamera 和 NVR 开发 librtmpc: RTMP 客户端协议,适合推流直播 libskt: Socket 封装 librpc: 远程过程调用库 l...
相关文章
文章评论
共有0条评论来说两句吧...