代码之家  ›  专栏  ›  技术社区  ›  mreichelt

如何在Java中获取UDP包的TTL?

  •  5
  • mreichelt  · 技术社区  · 14 年前

    我正在使用Java应用程序向一个Android设备发送UDP数据包。在那里,我有另一个Java应用程序接收这些UDP数据包并显示它的数据-非常简单。

    现在我正在研究一些路由算法——因此,很高兴知道一个UDP包自发送以来跳了多少次。我的想法是读出包的TTL(生存时间)值并显示出来。你知道这是否可能与纯Java?班级 DatagramPacket 一点提示都没有。

    我想这是不可能的,因为这个信息可能已经在较低的层被删除了,但我只是想确定一下。-)

    3 回复  |  直到 7 年前
        1
  •  3
  •   unwind    14 年前

    这个 TTL field 如您所知,是基础IP协议(使用时)的一个功能,而不是UDP。所以它在数据包API中不可见是有意义的。但是,我认为您是对的;通常不可能通过数据报级别的api:s访问IP数据包。您可能需要查看数据包捕获。

        2
  •  1
  •   Community CDub    8 年前

    这是IP头的一部分,是从套接字设置的,显然只适用于多播套接字。检查此答案:

    Java control IP TTL?

        3
  •  0
  •   P Marecki    7 年前

    为了您的目的,如果我正确地得到它,就足以操纵发送者的TTL;例如,将发送套接字的TTL设置为1、2、3、4、5,并且对于每个发送一条内容为“1”、“2”、“3”、“4”或“5”的消息,有些消息可能会在接收器上丢失…