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