Knu*_*ubo 11 c java networking java-native-interface
我有一些现有的C代码使用ICMP原始套接字来执行Ping,我需要在Java中使用此代码,因为Java不支持ICMP包.当我在JNI中包装代码并调用它时,C代码在执行以下操作时无法获取套接字:
socket(AF_INET,SOCK_RAW,1);
我猜Java已经删除了一些禁用Java进程中使用原始套接字的权限.我必须找到解决方案.
我观察到以下情况:
这意味着我可以通过选择这两种策略中的一种来解决我的问题,但我也不喜欢.有没有其他方法可以让Java接受JNI代码打开这个套接字?
编辑:我越是关注这个问题,我认为它必须与Windows 7的启动方式有关.
看起来如果你让Windows运行起来,或者你在Windows以外的其他平台上,也可以使用InetAddress.isReachable()方法.