最好的方式来做涉及Java的RAW套接字编程
发布时间:2020-12-14 16:40:27 所属栏目:Java 来源:网络整理
导读:我有一些现有的C代码,使用ICMP原始套接字做Ping,我需要在 Java中使用这个代码,因为 Java不支持ICMP包.当我在JNI中包装代码并调用它时,C代码在执行时无法获取套接字: 套接字(AF_INET,SOCK_RAW,1); 我猜Java已经放弃了一些禁止Java进程使用原始套接字的特权.
我有一些现有的C代码,使用ICMP原始套接字做Ping,我需要在
Java中使用这个代码,因为
Java不支持ICMP包.当我在JNI中包装代码并调用它时,C代码在执行时无法获取套接字:
套接字(AF_INET,SOCK_RAW,1); 我猜Java已经放弃了一些禁止Java进程使用原始套接字的特权.我必须找到一个解决方案. 我观察到以下情况: >如果我编写一个C程序,并从Java中使用运行时调用,那么分叉代码可能会打开套接字. 这意味着我可以通过选择这两个策略之一解决我的问题,但是我也不喜欢.有没有其他方法可以让Java接受JNI代码打开这个套接字? 编辑: 看起来,如果你得到窗口的行为,或者如果你在一些其他平台比Windows,也可以使用InetAddress.isReachable()方法. 解决方法
也许使用现有的Java本机套接字库?那么你不必担心编码JNI lib.
见:http://www.savarese.com/software/rocksaw/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |