这已经晚了大约六个月,但我在寻找解决相同问题时发现了这个线程,这就是我发现的:
我也尝试在创建我的 SessionAddress 对象时设置 ttl 值,但是使用wireshark,数据包仍然只有 1 的 ttl。但是,我使用不同的地址进行初始化和目标,但是当我使用相同的地址时,ttl 设置有效。所以如果你有两个 SessionAddress 对象,比如
String addr = "239.192.1.1";
int port = 22224;
int ttl = 32;
SessionAddress multiAddress =
new SessionAddress(InetAddress.getByName(addr), port, ttl);
SessionAddress localAddress =
new SessionAddress(InetAddress.getLocalHost(), SessionAddress.ANY_PORT, ttl);
SessionAddress multiAny =
new SessionAddress(InetAddress.getByName(addr), port, ttl);
然后你必须使用如下地址:
好的
RTPManager rtpManager = RTPManager.newInstance();
rtpManager.initialize(multiAddress);
rtpManager.addTarget(multiAddress);
好的
RTPManager rtpManager = RTPManager.newInstance();
rtpManager.initialize(multiAny);
rtpManager.addTarget(multiAddress);
坏的
RTPManager rtpManager = RTPManager.newInstance();
rtpManager.initialize(localAddress);
rtpManager.addTarget(multiAddress);
编辑:似乎只有传递给 initialize() 的 SessionAddress 需要设置 ttl