精华内容
下载资源
问答
  • libcoap

    2019-02-23 10:24:00
    待续 转载于:https://www.cnblogs.com/jly594761082/p/10421800.html

    待续

    转载于:https://www.cnblogs.com/jly594761082/p/10421800.html

    展开全文
  • libcoap: A C implementation of the Constrained Application Protocol (RFC 7252) Copyright (C) 2010—2021 by Olaf Bergmann bergmann@tzi.org and others ABOUT LIBCOAP libcoap is a C implementation of...
  • libcoap: A C implementation of the Constrained Application Protocol (RFC 7252) Copyright (C) 2010—2019 by Olaf Bergmann bergmann@tzi.org and others ABOUT LIBCOAP libcoap is a C implementation of ...
  • libcoap-4.2.0.zip

    2019-09-06 08:17:12
    著名的CoAP协议栈libcoap发布了4.2.0版本,增加了CoAP over TCP/TLS的支持,改善了DTLS协议的支持。 CoAP over TCP/TLS的支持 将改进CoAP在使用UDP时的端口穿越问题,使服务器可以随时向客户端推送消息。
  • libcoap 作为一个重要的 CoAP 开源实现,完整实现了 RFC 7252。很多优秀的 IoT 产品都用到了 libcoaplibcoap 为资源受限的设备(例如计算能力,射频范围,内存,带宽或网络数据包大小)实施轻量级应用程序协议,是...
  • libcoap-4.1.2开源代码

    2018-12-29 20:17:53
    libcoap-4.1.2开源代码,学习物联网的同学可以了解...
  • libcoap 简单测试

    千次阅读 2017-08-08 18:22:05
    最近在研究CoAP,打算使用libcoap体验一下CoAP,在网上找了些资料,整理如下。1. 什么是libcoaplibcoap: C-Implementation of CoAP libcoap implements a lightweight application-protocol for devices that...

    最近在研究CoAP,打算使用libcoap体验一下CoAP,在网上找了些资料,整理如下。

    1. 什么是libcoap?

    libcoap: C-Implementation of CoAP

    libcoap implements a lightweight application-protocol for devices that are constrained their resources such as computing power, RF range, memory, bandwith, or network packet sizes. This protocol, CoAP was standardized in the IETF as RFC 7252.

    2. 如何获取libcoap?

    sudo apt-get install autoconf automake libtool
    git clone https://github.com/obgm/libcoap.git
    cd libcoap
    ./autogen.sh
    ./configure –enable-documentation=no
    make
    sudo make install

    简单说一下上面的指令(我是使用的平台是Raspberry Pi 3):
    1. 需要安装autoconf automake libtool这几个工具,不然会提醒缺少工具。
    2. clone source code到本地。
    3. 执行一下autogen.sh脚本。
    4. 再执行一下configure脚本,后面带一下参数。

    在网上找资料的时候,有个老外用的命令是这个
    ./configure –no-documentation
    但是不知道我我在参数列表找不到–no-documentation
    然后用./configure –help 看到了下图的提示,于是改用
    ./configure –enable-documentation=no

    解决libcoap配置问题
    5. make 和 make install,可以看看Terminal输出具体这两个指令做了什么事情。

    3.如何体验libcoap?

    进入example目录
    一个Terminal先启动Server

    ./coap-server

    另一个Terminal启动Client

    ./coap-client -m get coap://localhost

    Client有信息输出就是成功了.
    过程大致如下
    测试过程

    4.参考资料?

    展开全文
  • CoAP协议 libcoap API

    2021-08-29 21:06:49
    libcoap是用C语言实现的一套CoAP协议,本文介绍libcoap的相关接口和重要结构体。 重要定义及数据结构 coap地址信息 用于标识本地及远端的地址信息,其定义如下: typedef struct coap_address_t { uint16_t ...

    Coap(Constrained Application Protocol)是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252。Coap英文全称是Constrained Application Protocol,意为受限应用协议,顾名思义,使用在资源受限的物联网设备上。物联网设备的ram,rom都通常非常小,运行TCP和HTTP是不可以接受的。coap在物联网中的应用主要是用来做设备发现。

    libcoap是用C语言实现的一套CoAP协议,本文介绍libcoap的相关接口和重要结构体。

    重要定义及数据结构

    coap地址信息

    用于标识本地及远端的地址信息,其定义如下:

    typedef struct coap_address_t 
    {
        uint16_t     port;
        ip_addr_t    addr;
    } coap_address_t;
    
    重要成员说明
    port连接地址端口号
    addr连接地址ip信息

    API列表

    接口说明
    coap_startupcoap功能模块初始化,包含时钟、随机数等
    coap_cleanupcoap退出
    coap_new_context建立coap上下文
    coap_free_context删除上下文
    coap_context_set_keepalive设置保活时间
    coap_new_optlist建立opt结构体
    coap_insert_optlist将opt插入链表
    coap_delete_optlist删除opt链表
    coap_new_client_session建立session
    coap_session_release删除session
    coap_register_option注册opt类型
    coap_register_response_handler注册消息回调函数
    coap_response_handler_t消息回调函数
    coap_register_event_handler注册事件回调函数
    coap_event_handler_t事件回调函数
    coap_register_nack_handler注册未收到期望ACK的回调函数
    coap_nack_handler_tnack回调函数
    coap_new_message_id获取新的消息ID
    coap_new_pdu创建PDU结构体
    coap_add_optlist_pdu将opt链表添加至PDU
    coap_add_data添加data数据到PDU
    coap_add_block添加block数据到PDU
    coap_send发送PDU消息
    coap_run_once主消息处理循环,处理消息重传、消息接收和分发等
    coap_can_exit判断coap是否有消息等待发送或者分发
    coap_split_uri从字符串提取URI信息,包含主机、端口、路径、请求参数等
    coap_split_query从字符串提取query信息

    coap_startup

    该函数为coap功能模块的初始化接口,用于初始化coap协议需要使用的时钟、随机数等,函数原型如下:

    void coap_startup(void);
    
    参数说明
    返回说明

    coap_cleanup

    该函数为coap功能模块的去初始化接口,函数原型如下:

    void coap_cleanup(void);
    
    参数说明
    返回说明

    coap_new_context

    该函数创建coap功能模块上下文,用于保存协议栈状态信息,函数原型如下:

    coap_context_t *coap_new_context(const coap_address_t *listen_addr);
    
    参数说明
    listen_addr监听地址,用作client时此处传入NULL
    返回说明
    NULL创建失败
    非NULL创建成功,返回上下文结构体指针

    coap_free_context

    该函数释放coap上下文资源,函数原型如下:

    void coap_free_context(coap_context_t *context);
    
    参数说明
    context需要释放的coap上下文指针
    返回说明

    coap_context_set_keepalive

    该函数用于设置上下文保活周期,函数原型如下:

    void coap_context_set_keepalive(coap_context_t *context, unsigned int seconds);
    
    参数说明
    context需要释放的coap上下文指针
    seconds保活周期
    返回说明

    coap_new_optlist

    该函数用于创建opt结构体,函数原型如下:

    coap_optlist_t *coap_new_optlist(uint16_t      number,
                                     size_t        length,
                                     const uint8_t *data);
    
    参数说明
    numberopt类型,由COAP_OPTION_XXX定义
    lengthopt数据长度
    dataopt数据
    返回说明
    NULL创建失败
    非NULL创建成功,返回opt结构体指针

    coap_insert_optlist

    该函数用于将opt结构体插入链表,函数原型如下:

    int coap_insert_optlist(coap_optlist_t  **optlist_chain,
                            coap_optlist_t   *optlist);
    
    参数说明
    optlist_chain用于插入数据的链表
    optlistopt结构体指针
    返回说明
    0插入失败
    1插入成功

    coap_delete_optlist

    该函数用于删除opt链表,释放链表的内存资源,函数原型如下:

    void coap_delete_optlist(coap_optlist_t *optlist_chain);
    
    参数说明
    optlist_chainopt链表
    返回说明

    coap_new_client_session

    该函数用于创建连接到指定服务器地址的客户session,函数原型如下:

    coap_session_t *coap_new_client_session(struct coap_context_t  *ctx,
                                            const coap_address_t   *local_if,
                                            const coap_address_t   *server,
                                            coap_proto_t            proto);
    
    参数说明
    ctxcoap上下文
    local_if指定用于网络连接的本地网络接口
    server服务器地址和端口信息
    proto指定连接协议,由COAP_PROTO_XXX宏定义
    返回说明
    NULL创建失败
    非NULL创建成功,返回session结构体指针

    coap_session_release

    该函数用于释放session资源,函数原型如下:

    void coap_session_release(coap_session_t *session);
    
    参数说明
    session需要释放的session
    返回说明

    coap_register_option

    该函数用于向ctx注册opt,函数原型如下:

    void coap_register_option(coap_context_t *ctx, uint16_t type);
    
    参数说明
    ctxcoap上下文
    typeopt类型
    返回说明

    coap_register_response_handler

    该函数用于注册回复消息的回调函数,函数原型如下:

    void coap_register_response_handler(coap_context_t           *context,
                                        coap_response_handler_t   handler);
    
    参数说明
    contextcoap上下文
    handler回调函数
    返回说明

    coap_response_handler_t

    coap回复消息的回调函数,函数原型如下:

    typedef void (*coap_response_handler_t)(struct coap_context_t *context,
                                            coap_session_t        *session,
                                            coap_pdu_t            *sent,
                                            coap_pdu_t            *received,
                                            const coap_tid_t       id);
    
    参数说明
    contextcoap上下文
    session标识连接的session
    sent传输数据的pdu
    received接收到的pdu
    id消息id
    返回说明

    coap_register_event_handler

    该函数用于注册事件的回调函数,函数原型如下:

    void coap_register_event_handler(struct coap_context_t  *context,
                                     coap_event_handler_t    hnd);
    
    参数说明
    contextcoap上下文
    hnd回调函数,事件宏定义:COAP_EVENT_XXX
    返回说明

    coap_event_handler_t

    typedef int (*coap_event_handler_t)(struct coap_context_t  *context,
                                        coap_event_t            event,
                                        struct coap_session_t  *session);
    

    事件回调函数,函数原型如下:

    参数说明
    contextcoap上下文
    event事件类型,参考COAP_EVENT_XXX宏定义
    session标识连接的session
    返回说明
    非0处理失败
    0处理成功

    coap_register_nack_handler

    该函数用于注册超时未收到ack的回调函数,函数原型如下:

    void coap_register_nack_handler(coap_context_t       *context,
                                    coap_nack_handler_t   handler);
    
    参数说明
    contextcoap上下文
    handler回调函数
    返回说明

    coap_nack_handler_t

    nack回调函数,函数原型如下:

    typedef void (*coap_nack_handler_t)(struct coap_context_t *context,
                                        coap_session_t        *session,
                                        coap_pdu_t            *sent,
                                        coap_nack_reason_t     reason,
                                        const coap_tid_t       id);
    
    参数说明
    contextcoap上下文
    session标识连接的session
    sent传输数据的pdu
    reasonnack详细原因,参见coap_nack_reason_t定义
    id消息id
    返回说明

    coap_new_message_id

    该函数用于新建消息ID,函数原型如下:

    uint16_t coap_new_message_id(coap_session_t *session);
    
    参数说明
    session标识连接信息的session
    返回说明
    非NULL消息ID

    coap_new_pdu

    该函数用于新建通信pdu,函数原型如下:

    coap_pdu_t *coap_new_pdu(const struct coap_session_t *session);
    
    参数说明
    session标识连接信息的session
    返回说明
    NULL创建失败
    非NULL创建成功,返回pdu结构体指针

    coap_add_optlist_pdu

    该函数用于添加opt链表到pdu,函数原型如下:

    int coap_add_optlist_pdu(coap_pdu_t *pdu, coap_optlist_t **optlist_chain);
    
    参数说明
    pdu标识通信的pdu
    optlist_chainopt链表
    返回说明
    0添加失败
    1添加成功

    coap_add_data

    该函数用于向pdu添加data数据,函数原型如下:

    int coap_add_data(coap_pdu_t *pdu, size_t len, const uint8_t *data);
    
    参数说明
    pdu标识通信的pdu
    lendata长度
    datadata数据
    返回说明
    0添加失败
    1添加成功

    coap_add_block

    该函数用于向pdu添加block数据,函数原型如下:

    int coap_add_block(coap_pdu_t       *pdu, 
                       unsigned int      len,  
                       const uint8_t    *data,
                       unsigned int      block_num, 
                       unsigned char     block_szx);
    
    参数说明
    pdu标识通信的pdu
    lendata长度
    data填充block的data数据
    block_numblock编号
    block_szxblock大小
    返回说明
    0添加失败
    1添加成功

    coap_send

    该函数用于向对端发送coap数据,函数原型如下:

    coap_tid_t coap_send(coap_session_t *session, coap_pdu_t *pdu);
    
    参数说明
    session标识连接信息的session
    pdu标识通信的pdu
    返回说明
    -1发送失败
    非-1发送成功,返回消息ID

    coap_run_once

    该函数用于主消息处理循环,处理消息重传、消息接收和分发等,函数原型如下:

    int coap_run_once(coap_context_t *ctx, unsigned int timeout_ms);
    
    参数说明
    ctxcoap上下文
    timeout_ms超时时间,单位:ms
    返回说明
    -1处理失败
    非-1发送成功,返回消息ID

    coap_can_exit

    该函数用于判断是否有消息等待发送或分发,函数原型如下:

    int coap_can_exit(coap_context_t *context);
    
    参数说明
    contextcoap上下文
    返回说明
    1无等待消息
    0有等待消息

    coap_split_uri

    该函数用于从字符串解析URI信息,函数原型如下:

    int coap_split_uri(const uint8_t *str_var, size_t len, coap_uri_t *uri);
    
    参数说明
    str_var包含URI信息的字符串
    len字符串长度
    uri用于保存URI信息的结构体指针
    返回说明
    <0解析失败
    0解析成功

    coap_split_query

    该函数用于从字符串解析query信息,生成标准query结构,函数原型如下:

    int coap_split_query(const uint8_t   *s, 
                         size_t           length,
                         unsigned char   *buf, 
                         size_t          *buflen);
    
    参数说明
    s包含query信息的字符串
    length字符串长度
    buf保存标准query结构的buf
    buflenbuf最大长度,执行成功时修改为实际写入buf数据长度
    返回说明
    <0解析失败
    0query数量

    使用示例

    展开全文
  • Libcoap安装和使用

    千次阅读 2017-11-29 09:51:18
    1.获得libcoap  通过git clone指令从github仓库中获得最新版本。  git clone https://github.com/authmillenon/libcoap.git 2. 编译和安装libcoap  由于libcoap的源代码包中只有...
    1.获得libcoap 
    
        通过git clone指令从github仓库中获得最新版本。
        git clone  https://github.com/authmillenon/libcoap.git

    2. 编译和安装libcoap
        由于libcoap的源代码包中只有configure.in文件,所以比一般的linux源代码方式安装多了一步autoconf,使用autoconf可生成configure文件。
        【1】生成configure文件
        autoconf
        【2】生成makefile文件
        ./configure
        【3】编译
        make
        【4】安装
        sudo make install 
        
        安装完成之后,便会新建/usr/local/include/libcoap目录,并把coap.h config.h debug.h pdu.h等头文件复制到该目录中。另外,编译生成的libcoap.a该静态链接库被复制到了/usr/local/lib中。
        同时,在编译完成之后,在example目录中会增加两个重要文件——coap-client和coap-server。

    3. libcoap使用
        进入example文件夹,在该文件夹中还有两个可执行文件,coap-client和coap-server。coap-client提供非常丰富的客户端测试指令,而coap-server提供一个较为简单的服务器端功能。
        【服务器端测试】
        在开始服务器端测试之前,必须知晓服务器端的IP地址,例如测试服务器的局域网IP地址为10.13.11.85
        【1】运行coap-server
        ./coap-server
        【2】在firefox中运行使用GET方法访问该服务器。该步骤需要保证firefox已经安装copper插件。
        在浏览器地址栏中输入coap://10.13.11.85,点击工具栏中的GET按钮,那么coap-server便会返回以下内容

    图1 使用火狐浏览器访问coap-server
        【客户端测试】
        【1】运行coap-server
        ./coap-server
        【2】运行coap-client
        ./coap-client -m get -o result.txt coap://localhost
        【-m】表示coap访问方法,默认为get方法,此处设置为get方法。除了get方法之外还包括put、post和delete。
        【-o】表示访问获得的内容保存到result.txt文件中
        如果访问成功,那么控制台输出:
        v:1 t:0 tkl:0 c:1 id:45104 
        【v】表示coap的版本编号,此时的coap的版本编号为1。
        【t】表示报文类型为CON,
        【tkl】表示token区域的长度,此时的token区域的长度为0。
        【c】表示访问方法(该处还需要分析)
        【id】表示message id
        result.txt文件内容为: 
    This is a test server made with libcoap (see http://libcoap.sf.net)
    Copyright (C) 2010--2013 Olaf Bergmann <bergmann@tzi.org>

    4.总结
        libcoap安装过程需要注意——libcoap并没有直接提供configure文件,需要使用autoconf工具生成configure文件,生成configure文件之后的安装方法和其他源代码形式的安装方法完全相同。libcoap中的coap-client是一个非常使用的工具,可通过控制台设置不同的参数,该工具可与firefox copper插件配合使用。
    展开全文
  • CoAP学习笔记——Libcoap安装和使用

    万次阅读 热门讨论 2015-04-10 15:16:01
    libcoap是CoAP协议的C语言实现,libcoap提供server和client功能,它是调试CoAP的有力工具,本文将说明如何在Linux平台上安装libcoap,并通过几个简单的例子说明libcoap的使用方法。
  • libcoap编译与移植

    千次阅读 2019-07-04 10:08:46
    开源库git:https://github.com/miri64/libcoap 生成Makefile: autoconf //sudo apt install autoconf //sudo apt-get install libtool //autoreconf --install ./configure --disable-doxygen --disable-...
  • 编译完libcoap之后,运行coap-server,再运行coap-client只有get方法有返回值,其余post/put/delete方法均返回method not allowed,是需要再configure是配置编译选项吗还是需要别的操作,恳请您在方便的时候可以解答...
  • 【交叉编译二】libcoap

    2020-11-25 14:02:41
    libcoap是一个coap协议的lib库,CoAP协议基于REST 构架。为了克服HTTP对于受限环境的劣势,CoAP既考虑到数据报长度的最优化,又考虑到提供可靠通信。一方面,CoAP提供URI,REST 式的方法如GET,POST,PUT和DELETE,...
  • libcoap:受约束的应用程序协议(RFC 7252)的AC实现 Olaf Bergmann 和其他著作权(C)2010-2021 关于LIBCOAP libcoap是轻量级应用程序协议的C实现,用于设备资源受限的设备,例如计算能力,RF范围,内存,带宽或...
  • Ubuntu 16.04 使用 Libcoap

    2018-04-22 21:03:00
    具体见:https://libcoap.net/doc/install.html#code https://blog.csdn.net/xukai871105/article/details/44980041 更新:2018年5月8日 10:08:59 以下方法 同样适用于 linuxmint 1.环境: 1.1.阿里云服务器 ...
  • 3.1下载libcoap git clone http://github.com/obgm/libcoap 3.2 编译 cd libcoap ./autogen.sh ./configure -enable-documentation=no -enable-tests=no 但是还是提示程序中缺少 a2x错误,需要执行 ./...
  • 受限应用协议 (CoAP) 是一种 RESTful 传输协议,适用于嵌入式和无线传感器系统中资源受限的网络和节点。 CoAPy 允许 Python 应用程序使用和提供 CoAP 网络服务。... 考虑使用同样托管在 SourceForge 上的 libcoap
  • Centos7安装配置libcoap

    2020-01-09 22:30:09
    为了学习Coap协议,看到EMQ官方文档中有推荐libcoap。辗转一个下午,本以为很容易安装,结果琢磨找了一点资料才行,也算是小风波。 因为本人也是安装有些错误望指出。 一、安装环境 yum -y install perl-devel.x86_...
  • libCoAP的源码以及实现

    千次阅读 2017-08-23 20:24:09
    首先在github上下载源码,目前最新的版本是4.1.2 https://github.com/obgm/libcoap,可以直接在linux环境下 git clone https://github.com/obgm/libcoap。然后解压 tar …………….,之后需要生成MIkefile文件,命令...
  • libcoap安装中openssl路径问题

    千次阅读 2017-10-20 15:48:58
    1,安装libcoap 步骤: git clone http://github.com/obgm/libcoap cd libcoap ./autogen.sh ./configure –enable-documentation=no –enable-tests=no 2,安装过程中遇到的问题 (1)执行命令./autogen.sh ...
  • libcoap的使用和CoAP协议分析一

    千次阅读 2017-12-29 17:01:30
    libcoap是一个coap协议的lib库,使用方便,搭建coap快捷方便!libcoap提供了example,以下从example中分析coap协议的数据封装!libcoap安装编译之后,在example下生成 coap-server和coap-client 可执行文件。coap-...
  • 在centos7编译libcoap(c++)源码进行configure时,出现openssl版本过低: 查看configure原文,发现其通过pkgcongfig获取openssl版本信息的: 因此着手升级openssl,记录下以便后用。 1.查看openssl版本 ...
  • libcoap问题

    千次阅读 2016-08-05 09:42:47
    1. unknown type name 'in_port_t' fix:typedef uint16_t in_port_t; 2.error: undefined reference to 'rpl_malloc'
  • libcoap的使用和CoAP协议分析二

    千次阅读 2018-01-02 19:04:13
    以下分析libcoap client.c,客户端请求 使用客户端命令进行请求,反馈如下 $ ./coap-client -m get coap://127.0.0.1/ $./ coap-client -m get coap://127.0.0.1/.well-known/core coap-client 参数...
  • libcoap-4.0.1

    2013-02-26 14:57:04
    linux下对coap服务器和客户端的仿真程序,适合初学者理解coap协议
  • CoAP实现的C源码- libcoap-4.1.1.tar.gz(2014年2月5日最新版本) 另上传Java语言实现的californium源码。
  • libcoap(一)

    千次阅读 2018-05-03 15:51:45
    server.c中 从网络端来看,还是一个基于UDP的网络程序 创建socket ctx = get_context(addr_str, port_str); if (!ctx) return -1; ctx = coap_new_context(&amp;addr);...addr.s...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 289
精华内容 115
关键字:

libcoap