C++ ESP CoAP服务器在不接收包的情况下调用资源处理程序

C++ ESP CoAP服务器在不接收包的情况下调用资源处理程序,c++,esp8266,coap,C++,Esp8266,Coap,我实现了一个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 = ""

我实现了一个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();
}
它一直在打印,没有收到任何数据包或请求。。。 为什么会发生这种情况? 谢谢

我正在使用此coap库:
关于esp8266

ip和端口的输出为:

(IP unset)
port : 
0

看起来这个特定的CoAP库在内部是第一个注册的资源,用于在收到任何包时使用最后一个接收到的CoAP消息进行更改,可能是为了检测是否要发送观察


您可能希望与库的作者讨论这一点,当这被称为时,它看起来像库中的一个bug。

请添加您正在使用的CoAP库的信息(链接);我发现了不同的coap_server.h,它们都可以与ESP8266一起使用,并且有细微的差别。另外,打印传入的IP和端口将有助于找到原因。@chrysn感谢您的回复。我已经编辑了这篇文章。@chrysn ip和端口的输出是:(ip未设置)端口:0谢谢你的回复,你建议使用哪一个库?在嵌入式系统中,我对Gcoap库(但这可能不适用,因为它内置在RIOT嵌入式操作系统中)和libcoap有很好的经验。
(IP unset)
port : 
0