用Java确定组播数据包的剩余TTL

时间:2009-11-12 16:16:44

标签: java sockets multicast

如果我有一个侦听组播数据的Java程序,我怎么知道传入数据报的剩余TTL是什么?

我知道如何在发送多播套接字上设置TTL,但我想知道到达数据包的剩余TTL。

2 个答案:

答案 0 :(得分:1)

什么是 到达的数据包?数据报或UDP数据包实际上可以分成几个IP数据包,如果它们的路由方式不同,则会以不同的TTL到达。在任何一种情况下(分裂与否),Java都不提供对IP头的访问。

答案 1 :(得分:1)

如果您收到带有原始套接字的UDP数据报,您可以检查TTL(或IP或UDP标头中的任何其他内容)。但是有很多陷阱:

  • 原始套接字不是Java的原生套接字(尽管至少有一个多平台第三方加载项可用:http://www.savarese.org/software/rocksaw/index.html)。
  • 在大多数操作系统上,您必须具有root访问权限或管理权限才能使用原始套接字
  • 如果你也想使用UDP数据,你必须自己进行校验和并重新组装碎片数据报......以及可能在片段中遇到不同的TTL(如jambjo所说)。