我正在使用Java应用程序将UDP数据包发送到Android设备。我有另一个Java应用程序接收这些UDP数据包并显示其数据 - 非常简单。
现在我正在研究一些路由算法 - 因此,知道UDP数据包自发送以来的跳数有多好。我的想法是只读出数据包的TTL(生存时间)值并显示它。你知道纯Java是否可行吗?班级DatagramPacket
根本没有给出任何提示。
我想这是不可能的,因为这些信息可能已经在较低层删除了,但我只想确定。 : - )
答案 0 :(得分:3)
如您所知,TTL field是基础IP协议(使用时)的功能,而不是UDP。因此,它在DatagramPacket API中不可见是有意义的。但是,我认为你是对的;通常不可能通过数据报级API访问IP数据包:s。您可能需要查看数据包捕获。
答案 1 :(得分:1)
这是IP头的一部分,是从socket设置的,显然只适用于多播套接字。检查这个答案:
答案 2 :(得分:0)
出于您的目的,如果我正确获取它,则足以操纵发送方的TTL;例如将发送套接字的TTL设置为1,2,3,4,5,并为每个发送一条内容为“ 1”,“ 2”,“ 3”,“ 4”或“ 5”等的消息。可能会丢失某些消息在接收器上...