实现默认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;
|
__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));
|
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)
|
if (err < 0)
|
||||||
{
|
{
|
||||||
SYS_LOG_WRN("Error occurred during sending: errno %d", errno);
|
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->udp_list);
|
||||||
slist_init_list(&p_cm->tcp_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 本地服务监听端口,同时为已启动监听的端口绑定一个数据接口。
|
* @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);
|
SYS_LOG_INF("bind udp: %p", port);
|
||||||
}
|
}
|
||||||
|
set_udp_broadcast_add(port);
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ uint8_t wifi_init(init_device_t *port)
|
|||||||
wifi_init_t init_struct = {
|
wifi_init_t init_struct = {
|
||||||
.ap = {
|
.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. */
|
.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},
|
.ip_v4 = {192, 168, 1, 1},
|
||||||
.gw_v4 = {192, 168, 1, 1},
|
.gw_v4 = {192, 168, 1, 1},
|
||||||
.mask_v4 = {255, 255, 255, 0},
|
.mask_v4 = {255, 255, 255, 0},
|
||||||
|
|||||||
Reference in New Issue
Block a user