0

我知道 CoAP 定义了一些可以包含在发送请求中的选项,每个选项都有自己的编号。CoAP uri 请求的结构如下所示:

coap-URI = "coap:" "//" host [ ":" port ] path-abempty [ "?" 询问 ]

其中包括一些选项,例如:Uri-Host、Uri-Port、Uri-Path 和 Uri-Query,每个选项都有自己的编号,例如:3 代表 Uri-Host,11 代表 Uri Path.... . 我想在这个 CoAP 请求中添加更多额外选项,例如一些选项编号 256、257...我该怎么做?

谢谢先进

儿子

4

1 回答 1

1

我设法通过了选项编号 256。

CoapClient client = new CoapClient(...);
Request request = new Request(CoAP.Code.GET, CoAP.Type.NON);
OptionSet optionSet = new OptionSet();
optionSet.addOption(new Option(256, "admin:admin"));
request.setOptions(optionSet);
client.advanced(request); // or async version
client.shutdown();

在资源:

@Override
public void handleGET(CoapExchange exchange) {
    OptionSet optionSet = exchange.advanced().getRequest().getOptions();
    List<Option> options = optionSet.asSortedList();
    options.stream()
            .filter(o -> o.getNumber() == 256)
            .findFirst()
            .ifPresent(o -> System.err.println(o.getNumber() + " " + o.getStringValue()));
}

输出:

256 admin:admin

但是,选项编号 256 通常可能不是正确的选择:

RFC 7252 受限应用协议 (CoAP)。12.2. CoAP 选项号码登记处

IANA 未来添加到该子注册管理机构的政策分为三个层次,如下所示。0..255 的范围保留给 IETF 定义的选项(IETF Review 或 IESG Approval)。256..2047 的范围保留给具有公共规范的常用选项(需要规范)。2048..64999 的范围适用于所有其他选项,包括私有选项或供应商特定选项,这些选项经过指定专家审查,以帮助确保正确定义选项语义。65000 和 65535(含)之间的选项编号保留用于实验。它们不适用于任何类型的供应商特定用途,并且不得用于操作部署。

于 2017-02-24T13:54:04.620 回答