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

我已经读过:
ESP32 - UDP broadcaster/ receiver with native LwIP library

但这没有帮助。我知道我的服务器可以正常工作,因为我可以通过终端发送包裹。
但是对于客户来说,这些软件包似乎并没有离开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返回正确的写入字节数。

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

最佳答案

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

我同时运行蓝牙和wifi。在esp32上,两者共享一根天线。看来BT的优先级更高(我正在运行a2dp接收器)。 wifi模块无法获取天线。因此出现了问题。

可以在这里找到以下问题(可能是解决方案):

acquire a semaphore for the esp32 antenna (bluetooth/wifi dualmode)

关于c++ - UDP客户端不在ESP32上广播消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55831612/

10-12 06:25