UDP 客户端不会在 esp32 上广播消息

UDP client doesn't broadcast message on esp32

本文关键字:广播 消息 esp32 客户端 UDP      更新时间:2023-10-16

所以我正在尝试通过 UDP 将数据包作为从一个 ESP32 到另一个 ESP32 的广播发送。接收方是access_point服务器,发送方是站和客户端。

我已经读过这个:ESP32 - 具有本机 LwIP 库的 UDP 广播/接收器

但这并没有帮助。我知道我的服务器可以工作,因为我可以通过终端发送包裹。但是对于客户端来说,软件包似乎并没有离开 esp。

我的代码:

// CLIENT: 
sockaddr_in _send_addr;
_send_addr.sin_family         = AF_INET,
_send_addr.sin_port           = htons( 5000 );
// also tried local broadcast 192.168.4.255
_send_addr.sin_addr.s_addr    = inet_addr( "255.255.255.255" ); 
_send_addr.sin_len            = sizeof( _send_addr );

int _sock;
_sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_IP );
int broadcast = 1;
setsockopt( _sock, SOL_SOCKET, SO_BROADCAST, &broadcast, sizeof(broadcast) );
void* data; // has some length
size_t len; // len of data
sendto( _sock, data, len, 0, (const struct sockaddr*) &_send_addr,
   sizeof(_send_addr) );
// SERVER:
// server is bound to same port, and to ip "0.0.0.0"
// like I said normally the server shouldn't be the problem, cause he received already

我跳过了检查。

但是一切都成功创建,并且 sendto 返回写入的正确字节数。

我真的不知道了,感谢任何帮助。

所以我

发现了问题。实际上,插座没有问题。

我同时运行蓝牙和无线网络。在 esp32 上,两者共用一个天线。BT似乎获得了更高的优先级(我正在运行a2dp接收器(。并且wifi模块无法获取天线。因此问题来了。

可以在此处找到以下问题(也许是解决方案(:

获取 ESP32 天线的信号量(蓝牙/无线网络双模(