完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在尝试使用 AT 命令制作 Access Point UDP 服务器。
简而言之,它有效,但我无法控制ESP8266本地端口,因为它是由芯片随机设置的。 我想创建一个具有已知固定端口的服务器,以便远程客户端可以启动连接(即 无需知道该随机端口即可访问它)。 我使用的命令是: AT CWMODE=2 (或 3) 在 cipmux=0 时 AT+CIPSTART="UDP","192.168.4.2",50000 -> at that point, I have to use AT+CIPSTATUS to get the ESP8266 port number. 然后在 CIPSEND 等工作 有什么想法吗?谢谢! |
|
相关推荐
1个回答
|
|
ESP8266 在使用 UDP 时,确实不能直接设置本地端口。但是,您可以通过以下方法实现类似的效果:
1. 使用 TCP 而不是 UDP:ESP8266 允许您在 TCP 模式下设置本地端口。您可以使用 AT 命令 `AT+CIPSERVER=1,50000,0` 来创建一个监听端口为 50000 的 TCP 服务器。然后,您可以使用 `AT+CIPSEND` 命令发送数据。 2. 使用多播地址:如果您的应用程序可以容忍多播地址,您可以使用多播地址来实现类似的效果。在这种情况下,您可以设置一个固定的多播地址,然后让 ESP8266 加入该多播组。这样,所有连接到该多播组的设备都可以接收到 ESP8266 发送的数据。 3. 使用第三方库:有一些第三方库,如 ESPAsyncUDP,可以帮助您实现在 ESP8266 上设置固定端口的 UDP 服务器。这些库通常使用更高级的编程技巧来实现这一功能,但它们可以为您提供更多的灵活性和控制。 以下是使用 ESPAsyncUDP 库的示例代码: ```cpp #include #include const char *ssid = "your_SSID"; const char *password = "your_PASSWORD"; AsyncUDP udp; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); if (udp.listen(50000)) { Serial.print("UDP server listening on port: "); Serial.println(50000); } } void loop() { AsyncUDPMessage msg; if (udp.parsePacket()) { udp.read(msg); Serial.print("Received packet from: "); Serial.print(msg.remoteIP()); Serial.print(":"); Serial.print(msg.remotePort()); Serial.print(" to local port: "); Serial.print(msg.localPort()); Serial.print(" length: "); Serial.println(msg.length()); // Process the received data here } } ``` 请注意,使用第三方库可能需要您具备一定的编程知识。如果您不熟悉这些库,可能需要花费一些时间学习如何使用它们。 |
|
|
|
只有小组成员才能发言,加入小组>>
416浏览 6评论
346浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
329浏览 5评论
330浏览 4评论
313浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-20 06:17 , Processed in 0.642488 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191