帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:Erlang  generic  coap  ERL  
Generic Erlang CoAP Client/Server

  • 源代码名称:gen_coap
  • 源代码网址:http://www.github.com/gotthardp/gen_coap
  • gen_coap源代码文档
  • gen_coap源代码下载
  • Git URL:
    git://www.github.com/gotthardp/gen_coap.git
  • Git Clone代码到本地:
    git clone http://www.github.com/gotthardp/gen_coap
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/gotthardp/gen_coap
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • 通用 Erlang CoAP客户端/服务器

    受限应用程序协议( CoAP )的纯Erlang实现,它的目标是符合以下条件:

    以下功能不是( 但是) 实现的:

    • 代理和虚拟服务器( uri主机。uri端口。代理uri和代理方案选项)

    它使用以下CoAP实现进行了测试:

    在以下应用程序中使用:

    请告诉我,如果你使用的是( 打算)的gen_coap。 API可能会改变,某些函数可能无法实现。 如果你发现一个 Bug 或者漏掉了一个特征,请添加一个问题。

    用法

    gen_coap 使你能够将CoAP服务器和/或者CoAP客户机集成到你的应用程序中。 出于演示目的,它还包括一个简单的CoAP客户端和服务器。

    Build Status

    客户端

    看一下 sample_client.erl。 它实现了一个简单的命令行 实用程序来操作和观察CoAP资源。 它将演示 coap_clientcoap_observer 模块的使用。 工具接受以下参数:

    参数说明
    -m 方法请求方法( 获取。放置。发布或者删除),默认值为'get'
    -e 文本将文本包含为有效负载
    -s 持续时间订阅时间为 [seconds ]
    Uri标识资源的coap://或者 coaps://URI

    简单地运行以下示例:

    
    $./coap-client.sh coap://127.0.0.1/.well-known/core
    
    
    $./coap-client.sh coaps://127.0.0.1/.well-known/core?rt=core.ps
    
    
    $./coap-client.sh coaps://127.0.0.1/resource
    
    
    $./coap-client.sh coap://127.0.0.1/resource -s 1000
    
    
    $./coap-client.sh -m put coap://127.0.0.1/resource -e data
    
    
    $./coap-client.sh -m delete coap://127.0.0.1/resource
    
    
    
    

    在erlang程序中,你可以通过以下方式获得CoAP资源:

    {ok, content, Data} =coap_client:request(get, "coap://coap.me:5683")

    不需要启动应用程序即可使用客户端。

    电子邮件服务器

    看一下 sample_server.erl。 它实现了一个简单的资源存储,可以使用CoAP访问。 它将演示 coap_server_registrycoap_responder 模块的使用。 服务器不需要任何参数。 按如下方式运行示例服务器,然后使用任何CoAP客户端( 或者 gen_coap 示例客户端工具) 访问它:

    
    $./coap-server.sh
    
    
    
    

    你可以通过以下方式手动从 Erlang 命令行 启动服务器:

    
    $ erl -pa _build/default/lib/gen_coap/ebin
    
    
    
    1> application:ensure_all_started(gen_coap).
    
    
    {ok,[crypto,asn1,public_key,ssl,gen_coap]}
    
    
    
    2> coap_server:start_udp(coap_udp_socket).
    
    
    {ok,<0.78.0>}
    
    
    
    

    但是,开箱即用的服务器不提供任何资源。 to访问some访问CoAP请求时需要实现的服务器资源,这定义了服务器在接收CoAP请求时调用回调。

    • 当CoAP客户机请求"。已知/核心"资源列表时,将调用 coap_discover
    • 当服务器收到资源的获取。POST。放置或者删除请求时,调用 coap_getcoap_postcoap_put 或者 coap_delete
    • coap_observe 或者 coap_unobserve 在带有Observe=0或者Observe=1选项的获取请求上调用。

    由于 Erlang 19.2支持DTLS传输。 要为示例coap服务器配置证书,请执行以下操作:

    
    $ cd gen_coap
    
    
    $ sudo openssl req -new> csr.pem
    
    
    $ sudo openssl rsa -in privkey.pem -out key.pem
    
    
    $ sudo openssl x509 -in csr.pem -out cert.pem -req -signkey key.pem
    
    
    
    

    体系结构

    下图显示了 gen_coap 模块是它们的关系: GitHub Logo

    生成指令

    Linux

    首先,你需要安装 rebar 插件。 请按以下方式安装 rebar 软件包 比如

    
    $ sudo yum install erlang-rebar
    
    
    
    

    那么你只需要运行

    
    $ git clone https://github.com/gotthardp/gen_coap.git
    
    
    $ cd gen_coap
    
    
    $ make
    
    
    
    

    Windows

    我建议你安装用于 Eclipse的IDE。 然后,导入项目:

    • 运行 Eclipse,选择文件> 新> 项目。 ,选择Erlang项目并单击下一步。
    • 输入gen_coap作为项目 NAME,并在你的机器上选择 gen_coap的位置。 点击 next。
    • 查看下一页并单击下一步。
    • 将源文件夹设置为 src;examples 并单击 Finish。

    运行Erlang应用程序之后,你应该能够在你的控制台中运行客户机和服务器:

    
    1> sample_server:start().
    
    
    ok
    
    
    
    2> sample_client:start(["coap://localhost/.well-known/core"]).
    
    
    get"coap://localhost/.well-known/core"
    
    
    {ok,content,{coap_content,<<"xyz">>,60,<<"application/link-format">>,<<>>}}
    
    
    ok
    
    
    
    


    文章标签:generic  Erlang  ERL  coap  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语