有时候在Ubuntu上编程时,会遇到UDP的recvfrom函数收不到包,但是在wireshark上来看是可以抓得到这个包的情况。仔细一看wireshark解析到该报文的"Checksum"之后标注了"unverified",如下图所示:
解决方案:
这种情况一般是被防火墙拦截了,可以考虑检查一下防火墙的状态,将防火墙关闭就好了。
1.检查防火墙状态:
sudo ufw status
其中,inactive是关闭,active是开启。
2.关闭防火墙:
sudo ufw disable
关闭后如图所示:
3.重启系统
sudo reboot -f
在重启后,再次尝试,发现UDP的recvfrom函数就可以收到数据包了。