0

这可能是一个愚蠢的问题,我不知道这是否可能。例如,如果我有 4 台服务器,A、B、C 和 D。在我在互联网上创建的示例中。如果主机 A 想向 C 和 D 发送消息,则 A 必须加入该组,C 和 D 也必须加入。我的问题是有时,我可能希望 A 向 B 和 C 发送消息,或者只向 C 和 D 发送消息。甚至 B 也可以稍后向 A 和 C 或 A 和 D 发送消息。这个问题有什么优雅的解决方案吗?

更多细节:我想要实现的是一个应用程序,它可以向其他任意应用程序列表发送消息。所以列表不会每次都保持不变。在 Java 中,目前为了通过多播来做到这一点,发送者和接收者必须加入同一个组。每次更改列表时都需要重复此操作。


非常感谢。

4

2 回答 2

0

通常这是通过在接收端安装一个过滤器来完成的。在数据包中包含接收消息的服务器列表,如果服务器接收到不适合它的消息,它会忽略该消息。有标准的过滤技术,但如果你需要更灵活的东西,你必须在代码中添加它。

于 2013-10-20T15:20:40.020 回答
0

如果主机 A 想向 C 和 D 发送消息,则 A 必须加入群组,C 和 D 也必须加入群组

不,只有 C 和 D 必须加入该组。

我的问题是有时,我可能希望 A 向 B 和 C 发送消息,或者只向 C 和 D 发送消息。甚至 B 可能会稍后向 A 和 C 或 A 和 D 发送消息

这听起来一点也不像多播。如果您有这么几台主机,为什么不只使用单播呢?

在 Java 中,目前为了通过多播来做到这一点,发送者和接收者必须加入同一个组。

这是不正确的。

  1. Java 与它无关。
  2. “当前”也没有。
  3. 发送者不需要加入多播组,或者用 Java 术语来说,甚至不需要使用 aMulticastSocket而不是 aDatagramSocket.

Java 只是提供了一个基于 IP 多播构建的类库,如1989 年的RFC 1112中所定义。

在我看来,您想要的可以通过熟练使用多个多播组或同一个多播组中的多个端口来实现。

但正如目前所表达的那样,您的问题在术语上是矛盾的。

于 2013-10-22T05:46:57.773 回答