最好的方式来做涉及Java的RAW套接字编程

前端之家收集整理的这篇文章主要介绍了最好的方式来做涉及Java的RAW套接字编程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些现有的C代码,使用ICMP原始套接字做Ping,我需要在 Java中使用这个代码,因为 Java不支持ICMP包.当我在JNI中包装代码调用它时,C代码在执行时无法获取套接字:

套接字(AF_INET,SOCK_RAW,1);

我猜Java已经放弃了一些禁止Java进程使用原始套接字的特权.我必须找到一个解决方案.

我观察到以下情况:

>如果我编写一个C程序,并从Java中使用运行时调用,那么分叉代码可能会打开套接字.
>如果我从Eclipse运行这个本机代码,它也运行良好.我想这是因为Eclipse已经从eclipse.exe启动,而不是从java.exe启动.

这意味着我可以通过选择这两个策略之一解决我的问题,但是我也不喜欢.有没有其他方法可以让Java接受JNI代码打开这个套接字?

编辑:
我看到这个问题越多,我认为它必须是一个Windows 7相关的问题,如何开始Java.

看起来,如果你得到窗口的行为,或者如果你在一些其他平台比Windows,也可以使用InetAddress.isReachable()方法.

解决方法

也许使用现有的Java本机套接字库?那么你不必担心编码JNI lib.

见:http://www.savarese.com/software/rocksaw/

原文链接:https://www.f2er.com/java/124582.html

猜你在找的Java相关文章