完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ESP32模块使用WIFI连接路由器,在使用SOCKET进行UDP通信时,发现在某些路由器下发不出数据,在同一个地方,连接华为的路由器可以正常通信,连接带光猫的天翼路由器则发出的数据收不到,也不能接收客户端发过来的数据,造成产品的兼容性不好,不知道有没遇到类似的情况?测试代码如下:
recSocket = CreateUDPClient(NET_CFG_LISTEN_PORT); ESP_LOGI(TAG,"Create Config listen socket!,socket:%d",recSocket); if(recSocket<=0){ ESP_LOGE(TAG,"Create listen socket fail"); return; } rec_buffer = audio_malloc(NET_CFG_RECBUFF_SIZE*sizeof(char)); if(rec_buffer == NULL){ ESP_LOGE(TAG,"Memory exhaust!"); return; } struct sockaddr_in peerAddr; socklen_t peerLen = sizeof(peerAddr); while(1){ NetworkConfigSend(dest_ip_address,"Hello",5); memset(rec_buffer,0,NET_CFG_RECBUFF_SIZE); if(recSocket>0){ ESP_LOGE(TAG,"Read socket data!"); //bytes_read = read (recSocket, rec_buffer, NET_CFG_RECBUFF_SIZE); bytes_read = recvfrom(recSocket,rec_buffer,NET_CFG_RECBUFF_SIZE,0,(struct sockaddr *)&peerAddr,&peerLen); if(bytes_read>0){ ESP_LOGI(TAG,"Receive packet:%s,bytes:%d",rec_buffer,bytes_read); ESP_LOGI(TAG,"peer address = %s:%dn", inet_ntoa(peerAddr.sin_addr), ntohs(peerAddr.sin_port)); if(NetCommandProcess(rec_buffer)>0){ ESP_LOGI(TAG,"Command process OK"); } dest_ip_address = peerAddr.sin_addr.s_addr; } if(bytes_read < 0){ ESP_LOGE(TAG,"UDP Receive had error!Reset socket.."); recSocket = 0; } else{ ESP_LOGE(TAG,"Rec timeout"); } }else{ vTaskDelay(2000); recSocket = CreateUDPClient(NET_CFG_LISTEN_PORT); ESP_LOGI(TAG,"Create Config listen socket!,socket:%d",recSocket); if(recSocket<=0){ ESP_LOGE(TAG,"UDP Create faile!"); break; } } } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
142个成员聚集在这个小组
加入小组529浏览 6评论
446浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
428浏览 5评论
424浏览 4评论
401浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 15:14 , Processed in 0.548341 second(s), Total 70, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号