ESP32 UDP通信客户端例程以及疑问-转
http://bbs.elecfans.com/jishu_1104872_1_1.html
本人在使用ESP32做UDP通讯时,不知道怎么发送广播包,请问应该如何发送广播包呢。如下代码,UDP client通信,当ip地址为192.168.1.220时,能够发送出去,但换成
clieAddrUDP.sin_addr.s_addr = inet_addr("255.255.255.255");时,无法成功发送。表现为函数直行发送成功,但使用抓包工具无法抓到该数据包,请问一下该如何操作,有没有相关例程呢?
#define SERVER_PORT 10001
#define MAX_BUF_SIZE 1024
static socklen_t len=0;
void UdpClientTask(void *p_arg)
{
int rtnValue;
int clifdUDP;
struct sockaddr_in clieAddrUDP;
char buffer[MAX_BUF_SIZE]="udp client test\r\n";
clifdUDP = socket(AF_INET,SOCK_DGRAM,0);
if( clifdUDP<0 ){
printf("udp client err\r\n");
}else{
printf("udp client ok\r\n");
}
/* 填充服务端的资料 */
clieAddrUDP.sin_family=AF_INET;
clieAddrUDP.sin_port=htons(SERVER_PORT);
//clieAddrUDP.sin_addr.s_addr = htonl(IPADDR_BROADCAST);
//clieAddrUDP.sin_addr.s_addr = inet_addr("255.255.255.255");
clieAddrUDP.sin_addr.s_addr = inet_addr("192.168.1.220");
//clieAddrUDP.sin_addr.s_addr = inet_addr("192.168.1.70");
memset(&(clieAddrUDP.sin_zero), 0, sizeof(clieAddrUDP.sin_zero));
len = sizeof(clieAddrUDP);
while(1){
printf("udp client\r\n");
WaitSignal();
rtnValue = sendto(clifdUDP,buffer,strlen(buffer),0,(struct sockaddr *)&clieAddrUDP,len);
printf("udp client = %d\r\n",rtnValue);
vTaskDelay(1000);
}
}
xTaskHandle gUdpClientHandle;
void udpClientTaskCreate(void)
{
xTaskCreate(&UdpClientTask, "UdpClientTask", 4096, NULL, 12, &gUdpClientHandle);
}

浙公网安备 33010602011771号