python 怎样用socket接受icmp差错报文

首先是需要权限,其次需要raw socket。OS通常并不向一般用户提供raw socket接口,因此目前看来似乎没有什么好办法。严格意义上讲,ICMP构建在IP协议基础上,而Windows和Linux对于非管理员都只允许使用TCP/UDP层上的东西,部分额外提供了一些既定的ICMP接口,例如ICMP echo往往有个无需权限随便调的玩意。当然你可以用C/Cpp写个玩意扩展一下,只不过既然要权限,还是平台相关,大概不一定有py包给你干这事。
■网友
感谢大家的回复,我的问题解决了,原因是windows自带的防火墙拦截了,所以python没有收到差错报文,正常的reply报文是没有拦截的,关闭windows防火墙或者放通策略就行了。


    推荐阅读