Java对等计算实践:基于IP多播的发现 - 编程入门网
received messages.
while (true)
{
byte [] arb = new byte [100];
DatagramPacket datagramPacket = new DatagramPacket(arb, arb.length);
multicastSocket.receive(datagramPacket);
System.out.println(new String(arb));
}
}
catch (Exception exception)
{
exception.printStackTrace();
}
}
}
清单 2. 简单客户机
java.net 包中的两个类使它运行。java.net.DatagramPacket 类保存了 IP 数据报包中包含的数据。java.net.MulticastSocket 类创建一个调整到一个特定多播组的多播套接字。 Java对等计算实践:基于IP多播的发现(3)时间:2010-12-14发现组件 尽管上述示例是一个很好的 IP 多播的演示,但它没有说明实现基于 IP 多播的对等点发现需要什么。要使它有用,我们需要一个功能不仅限于发送和接收包的软件组件。理想情况下,这个组件将了解它所接收的包的源对等点,并适当地丢弃一些信息,这些信息是关于那些它认为已经消失、死亡或以其它方式离去的对等点的。 在这个新设计中,对等点是一个多播组的成员。请牢记,发送到多播组的消息会透明地路由到该组的所有成员。 设计包括两个核心类和三个接口(我使用术语“接口”似乎不太严谨 — 在技术上是一个接口和两个抽象类)。Member 类的实例是一个多播组的成员。这个类管理所有的通信细节。MemberManager 类的一个实例负责了解参与多播组的其它成员。 对等点通过向多播组发送一个消息,来向属于多播组中的对等点宣布自己的存在。每个消息包含关于发送消息的对等点的信息 — 通常是主机名和用于正常(与发现无关)通信的端口。Member 类和 MemberManager 类对这些消息的内容几乎一无所知。对该信息的访问权属于使用这两个类的应用程序。 有三个接口跨越了消息传递/发现层和使用它的应用程序层之间的边界。它们是 Reference 抽象类、Message 接口和 MessageFactory 抽象类。应用程序必须提供这三个接口的实现。 Reference 抽象类定义了对多播组成员的引用。MemberManager 类管理一个引用集。应用程序将实现这个类的一个具体版本,它将包含应用程序所需要的任何引用逻辑。该类定义了两个方法,名称是 equalsInternal() 和 hashCodeInternal(),并且重新定义了 equals() 和 hashCode() 方法来调用这些方法。它通过这样做来强制实现者为这两个关键功能提供实现 — MemberManager 依赖于它们。 Message 接口定义了通过网络代码交换的消息数据的应用程序视图。应用程序将该消息看作是相对于应用程序运行范围的高级概念 — 类似于主机名和端口的概念。网络代码希望发送一个由字节组成的包。Message 接口的实现定义了如何将这些高级信息与字节相互转换。引用是信息的一个关键部分,所有消息都必须包含,因此该接口要求实现提供用于读和写 reference 的方法。 问题的最后部分是 MessageFactory 抽象类。这个类定义了生成新的 Message 实例的机制。深藏在 Member 类内的网络代码使用一个工厂来创建从多播数据报中抽取出的数据的 Message 实例 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |