ESP-CoAP 服务器调用资源处理程序,不接收包

ESP-CoAP server calls resource handler without receiving packages

本文关键字:程序 服务器 调用 资源 处理 ESP-CoAP      更新时间:2023-10-16

I 实现了一个 coap 服务器:

#include <coap_server.h>
coapServer coap;
void getListOfWiFi(coapPacket *packet, IPAddress ip, int port, int obs) //id = 0 GET
{
Serial.println("hello");
int numberOfNetworks = WiFi.scanNetworks();
String WifiList = "";
for (int i = 0; i < numberOfNetworks - 1; i++)
{
WifiList += WiFi.SSID(i) + "####";
}
WifiList += WiFi.SSID(numberOfNetworks - 1);
char *temp = new char[WifiList.length() + 1];
WifiList.toCharArray(temp, WifiList.length() + 1);
coap.sendResponse(ip, port, temp);
Serial.println("goodbye");
}
void setup()
{
coap.server(getListOfWiFi, "wifilist");
coap.start(5683);
}
void loop()
{
coap.loop();
}

启动 esp 时,串行监视器的输出为:

hello
goodbye
hello
goodbye
hello
goodbye
hello
goodbye
hello
goodbye
hello
goodbye

它继续打印这个,没有任何接收数据包或请求...... 为什么会这样? 谢谢。

我正在使用这个 coap 库:
在 esp8266 上 https://github.com/automote/ESP-CoAP

ip和端口的输出为:

(IP unset)
port : 
0

看起来这个特定的 CoAP 库在内部定期轮询第一个注册的资源,以查找与上次收到的 CoAP 消息的更改,每当收到任何包时,可能是为了检测是否要发送观察结果。

你可能想和库的作者讨论这个问题,当它被称为它时,它看起来像是库中的一个错误。