`
feng88724
  • 浏览: 170658 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

关于MulticastSocket中的setTimeToLive方法

    博客分类:
  • Java
JDK 
阅读更多
setTimeToLive
public void setTimeToLive(int ttl)
                   throws IOException
该方法用于设置在此 MulticastSocket 上发出的多播数据包的默认生存时间,以便控制多播的范围。
ttl 必须在 0 <= ttl <= 255 范围内,否则将抛出 IllegalArgumentException。


本人在两台不同的服务器上做了测试,发现了一个不为人知的问题。

服务器A : JDK1.6_12
服务器B : JDK1.6_18

本人写了一段相同的代码,发送组播数据包,同时使用setTimeToLive方法来设置数据包的TTL值。但是惊奇的发现,程序在服务器A所发出的数据包中的TTL值,并没有改变,始终是默认值1。 而在服务器B上,数据包中的TTL可以通过setTimeToLive方法随便设置。

因此我猜测,是JDK出了问题...在JDK1.6_12及以下版本,此方法失效。 (JDK1.6_6也做了测试)

在JDK1.6_18以上版本有效(对JDK1.6_22也做了测试)。

至于具体在哪一个版本修复了此问题,本人没有进一步调查,望大牛指教。


分享到:
评论
1 楼 java2liwei 2014-11-03  
你确定是生存时间而不是跨网段  

相关推荐

Global site tag (gtag.js) - Google Analytics