在java中的原始套接字

Nik*_*hil 9 java sockets raw-sockets

我是java socket编程的新手.我已经知道java只处理Internet Domain Sockets,它将支持UDP和TCP以及Raw IP Protocols.我想知道java支持Raw Sockets而不使用任何第三方应用程序?如果有可能,任何人都可以用一个小例子来帮助我吗?任何小建议都会非常棒!

h22*_*h22 5

Java 标准库中对原始套接字唯一真正可用的支持似乎是InetAddress.isReachable(),如果允许,它可以执行 ICMP ping。这真的不多,甚至可能不是真正的原始套接字,只是一个协议。

对于其他类型的原始通信,我建议通过一些基于 JNI 的包装器在 Linux 下使用Berkley 套接字(需要 root 权限)。

  • @JamesAnderson - 你的评论没有任何意义。1) Berkeley 套接字是 API 而不是协议。2) 虽然 JVM 可能(也可能不会)在内部使用这些 C/C++ API,但它们不能直接用于 Java 代码。 (3认同)
  • “原始套接字”理解能够编写完全自定义网络数据包的东西,支持任意(不仅仅是 ping)ICMP 请求。 (2认同)