实现默认UDP进行广播
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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},
|
||||
|
||||
Reference in New Issue
Block a user