问题标签 [multicast]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5401 浏览

networking - 如何在 Erlang 中使用 gen_udp 进行多播?

你如何gen_udp在 Erlang 中使用多播?我知道它在代码中,它背后没有文档。发送数据显而易见且简单。我想知道如何添加会员。不仅在启动时添加会员资格,而且在运行时添加会员资格也很有用。

0 投票
2 回答
4021 浏览

java - Java Multicast Time To Live 始终为 0

我在数据报数据包上设置 TTL 时遇到问题。在将数据包发送到多播套接字之前,我在数据包上调用 setTTL(...) 方法,但是如果我用 ethereal 捕获数据包,则 TTL 字段始终设置为 0

0 投票
4 回答
8680 浏览

java - 没有多播的tomcat会话复制

我计划使用在托管服务提供商处租用的 2 台专用根服务器。这些机器将在集群中运行 tomcat 6。如果我稍后会添加其他机器 - 它们不太可能通过多播访问,因为它们将位于不同的子网中。

没有多播可以运行tomcat吗?tomcat 6 集群的所有教程都包括多播心跳。有没有 SimpleTcpCluster 的替代品?

还是在这种情况下其他替代方案更合适?

0 投票
3 回答
3020 浏览

python - 用 Python 编写一个可靠的、完全有序的多播系统

我必须用 Python 从头开始​​编写一个可靠的、完全有序的多播系统。我不能使用任何外部库。我被允许使用中央音序器。

似乎有两种直接的方法:

  1. 编写一个高效的系统,为每个多播消息附加一个唯一的 id,为其接收到的消息 id 具有定序器多播序列号,并来回发送 ACK 和 NACK。
  2. 编写一个低效的泛洪系统,其中每个多播器只需重新​​发送它接收到的每条消息一次(除非它是由那个特定的多播器发送的。)

我被允许使用第二个选项,并且倾向于这样做。

我目前正在多播 UDP 消息(这似乎是唯一的选择),但这意味着某些消息可能会丢失。这意味着我必须能够唯一标识每个发送的 UDP 消息,以便可以根据 #2 重新发送它。我真的应该生成唯一的数字(例如使用发件人地址和计数器)并将它们打包到每个发送的 UDP 消息中吗?我该怎么做呢?以及如何在 Python 中接收单个 UDP 消息,而不是数据流(即socket.recv)?

0 投票
2 回答
6106 浏览

c# - 在 C# 中需要多播 udp 服务器发现方面的帮助

作为对这个问题的一种跟进,我已经在我的本地机器上得到了一个解决方案,但在网络上的机器上却没有。

除了基础知识之外,我对套接字知之甚少,所以请耐心等待。目标是让客户端在本地网络上寻找服务器,这是一些剪切/粘贴/编辑代码的结果。

这是客户端代码:

这是服务器代码:

它可以在我的本地机器(服务器和客户端)上找到,但是当我在同一网络上尝试另一台机器时,我得到“现有连接被远程主机强行关闭”

我意识到我需要添加很多尝试/捕获,但我只是想先了解它是如何工作的。

0 投票
1 回答
31523 浏览

networking - Linux 和 IGMPv3 上的多播加入

我们遇到了一个棘手的问题。我们正在编写一个接收多播 UDP 流量的 C++ 程序。我们正在将我们的应用程序移至不同的网络环境,我们的运营团队已要求我们支持来自我们的应用程序的 IGMPv3 成员资格公告。初步调查表明 Linux 2.6 内核确实支持 IGMPv3。因此,我很困惑,当我们运行 tcpdump 时,我们会看到以下输出跟踪:

我的理解是,可以通过在文件 /proc/sys/net/ipv4/conf/eth1.22/force_igmp_version 中指定一个非零值来强制内核使用较低版本的 IGMP;但是,我已经确认该文件具有零值配置。

我们的应用程序使用以下代码加入多播组:

我们需要在源程序中包含一些额外的东西来强制 IGMPv3 吗?

0 投票
5 回答
57435 浏览

networking - 如何为我的应用程序选择多播地址?

我应该如何为我的应用程序选择 IPv4 多播地址?我可能需要不止一个(最终可能需要整个范围),但只是想避免与其他应用程序发生冲突。

  • 数据包将完全包含在管理域中,可能是 LAN
  • 如果我的应用程序的多个独立实例在同一个网络上使用,它们每个都可以使用自己的多播地址 - 但如果它们不这样做,它们无论如何都可以共存,它们只会有少量的开销忽略彼此的包。
  • 我的数据包已经包含一个“幻数”以避免出现问题
  • 我将检查发起者地址(我知道当然可以被欺骗)、TTL 和其他东西,以防止意外的数据包搞砸。

请想法:)

目前我刚刚从“本地使用”空间中分配了一个任意一个,239.255.42.99

0 投票
6 回答
3414 浏览

networking - 开放互联网上的一对一多播可靠吗?

我是网络新手。我了解多播的概念,但想知道它在开放/公共互联网上是否可靠?

这似乎是一种边缘情况,不同的骨干网或 ISP 可能会故意中断以减少路由器负载或通常将网络分段以用于实际的高使用应用程序。

我的恐惧合理吗?

PS 后续问题: 应用程序多播的最佳教程?

0 投票
2 回答
2662 浏览

ip - 应用程序多播的最佳教程?

我最近意识到 IP 多播(在公共互联网上显然不能很好地工作)和应用程序多播(根据http://en.wikipedia.org显然在 IRC 和 PSYC 中使用)之间存在区别/wiki/多播)。

是否有关于实现应用程序级多播的好教程?

我认为多播的全部意义在于减少公共网段的带宽,所以我很难理解应用程序级多播的作用。

0 投票
1 回答
1611 浏览

java - Java:使用MulticastSocket接收时确定接收地址

我正在使用 MulticastSocket 接收 UDP 多播数据包。如何确定这样的数据包发送到哪个地址?使用提供的方法,我只能确定发件人地址。

当然,我是在创建侦听套接字时设置 To-Address 的人,但我真的可以确定吗?广播包呢?以某种方式最终到达这里的数据包呢?我真的很想区分数据包是否真的是多播的。

谢谢!

更新:目前似乎刚刚发送到该端口的单播数据包也最终在多播套接字中接收():(绑定到设备也没有给我更好的结果