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也做了测试)。
至于具体在哪一个版本修复了此问题,本人没有进一步调查,望大牛指教。
分享到:
相关推荐
`MulticastSocket`提供了设置多播选项的方法,如`setInterface(InetAddress interface)`来指定用于发送和接收多播数据的网络接口,以及`setTimeToLive(int ttl)`来设置数据包在网络中的生存时间(TTL)。...
MulticastSocket 是 Java 中用于实现多点广播的类,它提供了joinGroup() 和 leaveGroup() 方法来加入和离开多点广播地址,并提供了 setTimeToLive() 方法来设置数据报的生命周期。使用 MulticastSocket 可以实现高效...
通过`setTimeToLive()`方法,我们可以控制数据包在网络中的传播范围,防止循环回路导致的数据包无限传播。 7. **网络接口选择**: 通过`setInterface()`方法,我们可以指定使用哪个网络接口进行组播通信,这对于多...
3. 设置多播TTL(Time To Live):TTL决定了数据包在网络中的跳数,可以使用`setTimeToLive(int ttl)`方法设置。 三、发送和接收组播数据 1. 发送数据:使用`send(DatagramPacket dp)`方法发送数据包。首先创建一...
5. **setTimeToLive()**:设置多播数据包在网络中的生存时间,以避免无限循环。 6. **leaveGroup()**:当不再需要接收多播数据时,使用此方法退出多播组。 通过深入研究"MulticastChat2.java",可以学习到如何设置...
同时,`setTimeToLive`方法可以设置数据包在网络中存活的时间,避免无限传播。 在实际应用中,组播系统常常与线程结合使用,以便同时处理多个接收和发送任务。此外,为了实现更复杂的组播功能,如动态加入/离开组、...
不过,MulticastSocket还提供了一个特有的`setTimeToLive(int ttl)`方法,用于设置数据报在网络中的存活时间(TTL),决定数据报能跨越多少个网络节点。TTL值越大,数据报传播的范围越广。默认情况下,TTL值为1,这...
注意,`setTimeToLive(4)`限制了广播包在网络中的传播范围,避免影响到其他网络。 服务端代码中,同样创建`MulticastSocket`来监听广播。在`onCreate()`方法中,设置广播地址并创建`InetAddress`对象。当有数据包...
例如,可以通过设置MulticastSocket的timeToLive(TTL)属性来限制多播数据包在网络中的传播范围: ```java socket.setTimeToLive(2); // TTL值为2,表示最多经过2个路由器 ``` 总的来说,“Multicast:向玩家组...
在Java中,可以使用MulticastSocket类来实现多播。下面是一个简单的多播接收器示例: ```java public class MulticastReceiverTest { public static void main(String[] args) throws Exception { final ...
socket.setTimeToLive(1); socket.joinGroup(group); } catch(Exception e) { System.out.println("Error: "+ e); } setBounds(100,50,360,380); setVisible(true); addWindowListener(new ...
在Java中,实现多播功能主要依赖于`java.net.MulticastSocket`类。这个类提供了加入多播组、发送多播数据和离开多播组等方法。让我们详细探讨一下这两个源代码文件可能涉及的知识点: 1. **多播组管理**: - `join...