【问题标题】:Raw socket in java [closed]java中的原始套接字[关闭]
【发布时间】:2013-02-14 10:58:08
【问题描述】:

我对 Java 套接字编程很陌生。我已经了解了 java 只处理 Internet 域套接字,它将支持 UDP 和 TCP 以及原始 IP 协议。我想知道java是否支持原始套接字而不使用任何第三方应用程序?如果可能的话,有人可以帮我举个小例子吗?任何小建议都会非常有用!

【问题讨论】:

标签: java sockets raw-sockets


【解决方案1】:

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

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

【讨论】:

  • 查看原始帖子的评论。所有“java.net”接口都支持 Berkley 套接字协议,并在 JVM 内部实现。
  • “原始套接字”理解能够编写完全自定义的网络数据包的东西,支持任意(不仅仅是 ping)ICMP 请求。
  • @JamesAnderson - 你的评论没有任何意义。 1) Berkeley 套接字是一种 API 而不是协议。 2) 虽然 JVM 可能(也可能不会)在内部使用这些 C/C++ API,但它们不能直接用于 Java 代码。
猜你喜欢
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 2014-03-01
  • 2014-06-26
  • 1970-01-01
  • 2011-09-22
  • 1970-01-01
  • 2023-01-17
相关资源
最近更新 更多