我为ping命令编写了一个c代码,由于某种原因它没有收到任何回复。我花了几天的时间试图找到代码的问题,但后来我用wireshark检查了数据包发送。我发现答复已发送给我(目的地无法访问,因为它应该与我输入的目标IP一起)。在Internet上我发现我的防火墙可能会导致这个问题,但我找不到任何解决方案。所以请帮助我,如何为我的防火墙添加某些代码的某种代码?谢谢。
EDITED
iptables输出:
Chain INPUT(政策接受) 目标prot opt源目的地
Chain FORWARD(政策接受) 目标prot opt源目的地
Chain OUTPUT(政策接受) 目标prot opt源目的地
Wireshark输出:
17 0.641636029 192.168.0.134 192.168.0.1 ICMP 120目的地不可达(端口不可达)
此外,我可能犯了一个错误,问题可能不在接收中,而在于发送数据包
答案 0 :(得分:1)
尝试使用以下命令检查防火墙iptables -L -n
并提供输出
答案 1 :(得分:1)
考虑使用某些类似using a FileDialog
instead或liboping
请注意ping
使用libping(请参阅ICMP)。您的程序可能需要root权限。因此,您需要以root身份运行它,或使用icmp(7)技术。
系统地检查您正在使用的每个系统调用失败(有关列表,请参阅setuid)。阅读syscalls(2)并使用errno(3)(或strerror(errno)
)。
在程序中也使用perror(3)来了解已完成的系统调用(以及哪个系统调用失败)。