udp接收延迟后多个包同时到达
Posted: Thu Aug 24, 2023 3:48 am
大家好,我使用esp32-s2运行udp_server这个例程监听一个端口并接收数据,主机端是pc进行100hz的udp发送,包长度296,路由器距离esp32-s2足够近,rssi在-45到-50之间,能够排除路由器和主机发送的问题。
期望的运行结果:esp32-s2以10-30ms(考虑丢包情况)的间隔接收到udp包。
实际运行结果:大部分情况下按照期望运行结果运行,但是不时会出现突发延迟的情况,即例如出现udp接收阻塞200ms后同时接收到15-20个包,这个阻塞延迟时间在100-800ms之间不定。
问题分析:怀疑是例程的设置问题,因为阻塞200ms的阶段udp包实际并没有丢失,依然被esp32接收并放到缓冲区中,只是recvfrom函数似乎没有一接收到数据就立即从缓冲区读出,而是等到缓冲区积累了一定数量后才一次性把15-20个包同时读出来。
请教论坛大佬以及官方技术大神是否有解决思路,谢谢!
期望的运行结果:esp32-s2以10-30ms(考虑丢包情况)的间隔接收到udp包。
实际运行结果:大部分情况下按照期望运行结果运行,但是不时会出现突发延迟的情况,即例如出现udp接收阻塞200ms后同时接收到15-20个包,这个阻塞延迟时间在100-800ms之间不定。
问题分析:怀疑是例程的设置问题,因为阻塞200ms的阶段udp包实际并没有丢失,依然被esp32接收并放到缓冲区中,只是recvfrom函数似乎没有一接收到数据就立即从缓冲区读出,而是等到缓冲区积累了一定数量后才一次性把15-20个包同时读出来。
请教论坛大佬以及官方技术大神是否有解决思路,谢谢!