From 5c37aac9380cf6b856dbc8004a1740250d71dd9d Mon Sep 17 00:00:00 2001 From: OPTOC <9159397+optoc@user.noreply.gitee.com> Date: Fri, 29 Aug 2025 14:29:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E9=BB=98=E8=AE=A4UDP?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=B9=BF=E6=92=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../socket_inet/socket_inet_server.c | 23 +++++++++++++++++++ app/drivers/sertrf/device.c | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/drivers/data_port/socket_inet/socket_inet_server.c b/app/drivers/data_port/socket_inet/socket_inet_server.c index b4c9c61..863237a 100644 --- a/app/drivers/data_port/socket_inet/socket_inet_server.c +++ b/app/drivers/data_port/socket_inet/socket_inet_server.c @@ -200,6 +200,14 @@ static int _port_udp_write(sb_data_port_t *port, const void *data, uint32_t size { __port_data_t *port_data = port->data; int err = sendto(port_data->sock, data, size, 0, (struct sockaddr *)&port_data->udp.dest_addr, sizeof(port_data->udp.dest_addr)); + + // char ip_str[INET6_ADDRSTRLEN]; // 兼容 IPv4 和 IPv6 + // uint16_t test = 0; + // struct sockaddr_in *addr4 =(struct sockaddr_in *)&port_data->udp.dest_addr; + // inet_ntop(AF_INET, &addr4->sin_addr, ip_str, sizeof(ip_str)); + // test = ntohs(addr4->sin_port); + // SYS_LOG_WRN("IPv4: %s:%u\n", ip_str, test); + if (err < 0) { SYS_LOG_WRN("Error occurred during sending: errno %d", errno); @@ -1206,6 +1214,20 @@ void socket_inet_server_init(void) slist_init_list(&p_cm->udp_list); slist_init_list(&p_cm->tcp_list); } +/** + * @brief 设置 udp 的广播地址 以及端口 + * + * @param port 接口 + */ +void set_udp_broadcast_add(sb_data_port_t* port) +{ + __port_data_t *port_data = port->data; + + struct sockaddr_in *dest_addr_ipv4 = (struct sockaddr_in *)&port_data->udp.dest_addr; + dest_addr_ipv4->sin_family = AF_INET; // IPv4 协议族 + dest_addr_ipv4->sin_port = htons(port_data->listen_port); // 端口 + dest_addr_ipv4->sin_addr.s_addr = inet_addr("255.255.255.255"); // 例如广播地址 +} /** * @brief 创建一个 udp 本地服务监听端口,同时为已启动监听的端口绑定一个数据接口。 @@ -1229,6 +1251,7 @@ sb_data_port_t *socket_inet_server_bind_udp(uint16_t listen_port, const socket_s SYS_LOG_INF("bind udp: %p", port); } + set_udp_broadcast_add(port); return port; } diff --git a/app/drivers/sertrf/device.c b/app/drivers/sertrf/device.c index 7eb6a88..410efc1 100644 --- a/app/drivers/sertrf/device.c +++ b/app/drivers/sertrf/device.c @@ -183,7 +183,7 @@ uint8_t wifi_init(init_device_t *port) wifi_init_t init_struct = { .ap = { .ssid = "Sertorf", /**< SSID of soft-AP. If ssid_len field is 0, this must be a Null terminated string. Otherwise, length is set according to ssid_len. */ - .password = "12345678", /**< Password of soft-AP. */ + .password = "", /**< Password of soft-AP. */ .ip_v4 = {192, 168, 1, 1}, .gw_v4 = {192, 168, 1, 1}, .mask_v4 = {255, 255, 255, 0},