#coap-server #coap #coap-message #networking #udp-server #sockets #udp-socket

无std embedded-nal-minimal-coapserver

基于嵌入式-nal构建的最小CoAP服务器实现

6个版本 (3个重大变更)

0.4.0 2024年1月17日
0.3.1 2023年1月11日
0.3.0 2021年8月10日
0.2.1 2021年2月11日
0.1.0 2021年2月9日

嵌入式开发中排名354

Download history 51/week @ 2024-04-02 39/week @ 2024-04-09 22/week @ 2024-04-16 11/week @ 2024-04-23 83/week @ 2024-04-30 56/week @ 2024-05-07 335/week @ 2024-05-14 105/week @ 2024-05-21 102/week @ 2024-05-28 55/week @ 2024-06-04 15/week @ 2024-06-11 392/week @ 2024-06-18 72/week @ 2024-06-25 273/week @ 2024-07-02 13/week @ 2024-07-09 109/week @ 2024-07-16

每月下载量569
用于coap-message-demos

MIT/Apache

20KB
136 代码行

Build Status Maintenance

嵌入式-nal-minimal-coapserver

基于[embedded_nal]构建的最小CoAP服务器实现。

使用和操作

直到项目进一步成熟,请参阅示例了解使用方法。一般步骤如下:

  • 获取一个具有实现embedded_nal::UdpServer的UDP服务器套接字的网络堆栈

  • 创建一个实现coap_handler::Handler的CoAP处理程序;coap_handler::implementations模块包含一些构建块(包括将单个资源的处理程序组合成从URI路径中选择子处理程序的处理程序的一些构建块)。

  • 当有迹象表明可能收到了请求时,请使用堆栈、套接字和处理程序调用[poll]。这将从套接字接收数据,解码CoAP消息,将其传递给处理程序,并发送响应。

    如果处理了一条消息(或接收到了可以忽略的内容),则返回成功;从套接字传播错误,并在套接字就绪时返回WouldBlock

    通过应用以下约束并行使CoAP中设计的一些自由度,服务器不需要保留任何自己的状态。

注意事项

  • 服务器不执行任何放大缓解(处理程序由于缺乏远程信息而无法执行);仅在可接受的环境中(例如,在封闭网络中)使用此功能。

  • 服务器不执行任何消息去重。因此,所有处理程序函数都必须是幂等的。

  • 响应逻辑使用nb实现,并不尝试存储后续调用中的响应。如果收到请求且无法立即发送响应,则将其丢弃。

  • 基于嵌入式-nal,它绑定到任何地址,但将发送地址的选择留给网络堆栈;当在具有多个IP地址的系统上运行时,这会导致微妙的错误。

  • 消息的创建尽可能地减少复制,符合[embedded_nal]允许的最小复制。对于可写消息,这意味着它们需要按升序CoAP选项号写入。这与已实现的coap_message::MinimalWritableMessagecoap_message::MutableWritableMessage特质相一致。

    这种限制使这个库不仅可以是no_std,而且也不需要alloc

路线图

该服务器的目标是成为一个可以轻松使用的组件,为嵌入式设备提供CoAP连接,同时仍然具有实际可用性。

这意味着需要解决放大缓解问题,并必须提供安全性支持(可能通过参考OSCORE/EDHOC混合实现)。

除此之外,该实现的计划是保持简单,并利用CoAP提供的优化,即使这意味着限制应用程序(例如,限制为立即响应和幂等处理程序)。

许可证:MIT OR Apache-2.0

依赖项

~3MB
~70K SLoC