如何使用 Java MulticastSocket 在不同的 EC2 实例之间进行多播?

How to multicast between different EC2 instances using Java MulticastSocket?

我已经实现了一个简单的 P2P 多播网络,其中连接到网络的每个对等点都将数据发送给其他每个对等点。为了使其成为可能,我使用了 Java MulticastSocket Class,因此每个对等点都加入了一个由可用的多播 IP 地址和端口号定义的多播组。 我在尝试 运行 使用 EC2 服务的程序时遇到了一些问题,其中每个生成的实例都代表网络的一个对等点,因为就交换的消息未到达接收方而言,对等点无法进行通信。 因此,基本上我的问题是:有没有办法让 EC2 实例使用 Java MulticastSocket 相互通信?谁能帮忙?

在本地,你不能。

Q. Does Amazon VPC support multicast or broadcast?

No.

https://aws.amazon.com/vpc/faqs/

EC2 Classic 也是如此(尽管您几乎没有任何理由想要使用它,如果您的帐户允许的话)。

VPC 看起来像以太网,但它不是。打开数据包嗅探器并尝试 ping。观察两侧的 ARP 流量,您会发现一些有启发性的东西——源机器为目标机器发送 arp 并得到响应,但是您在目标机器上看不到这两个数据包。 ARP 响应来自网络基础设施本身。

有一个 workhackaround,如果你觉得狡猾:你可以构建一个覆盖网状网络,通过单播传输多播。

https://aws.amazon.com/articles/6234671078671125