我正在使用 Java 应用程序将 UDP 数据包发送到 Android 设备。我有另一个 Java 应用程序接收这些 UDP 数据包并显示其数据 - 非常简单。
现在我正在研究一些路由算法——因此很高兴知道一个 UDP 数据包自发送以来做了多少跳。我的想法是读出数据包的 TTL(生存时间)值并显示它。你知道这对于纯 Java 是否可行?该课程DatagramPacket
根本没有给出任何提示。
我想这是不可能的,因为这些信息可能已经在较低层被删除,但我只是想确定一下。:-)
我正在使用 Java 应用程序将 UDP 数据包发送到 Android 设备。我有另一个 Java 应用程序接收这些 UDP 数据包并显示其数据 - 非常简单。
现在我正在研究一些路由算法——因此很高兴知道一个 UDP 数据包自发送以来做了多少跳。我的想法是读出数据包的 TTL(生存时间)值并显示它。你知道这对于纯 Java 是否可行?该课程DatagramPacket
根本没有给出任何提示。
我想这是不可能的,因为这些信息可能已经在较低层被删除,但我只是想确定一下。:-)
如您所知, TTL 字段是底层 IP 协议(使用时)的功能,而不是 UDP。所以它在 DatagramPacket API 中不可见是有意义的。但是,我认为您是对的;通常不可能通过数据报级 API:s 访问 IP 数据包。您可能需要查看数据包捕获。
出于您的目的,如果我理解正确,则操纵发件人的 TTL 就足够了;例如,将发送套接字的 TTL 设置为 1、2、3、4、5,并为每个发送一条内容为“1”、“2”、“3”、“4”或“5”等的消息。有些可能是在接收器上丢失...