问题标签 [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 投票
2 回答
2182 浏览

c# - 没有网络依赖的进程间发布订阅

假设我的计算机上没有安装网卡,并且我希望具有类似于以下的功能:

进程 1 将消息发布到某个 URI,比如“Uri1”

进程 2 将侦听“Uri1”上的消息并将消息发布到“Uri2”

进程 3 将侦听来自两个 URI 的消息

所有进程都在同一台计算机上运行。经过一些研究,我相信 MSMQ 是可行的方法(使用队列名称作为 URI),但实现问题仍然存在。我遇到了几种可能性:

直接使用 MSMQ
这种方法的问题是我必须自己管理队列,例如创建、填充、清除......同样从我阅读的内容来看,我可能会遇到许多 MSMQ 的陷阱和限制,因为我没有经验用它

使用NServiceBusMassTransitRhinoServiceBus(都使用 MSMQ) 它们看起来都很有能力,尤其是 NServiceBus,但我似乎无法从文档中弄清楚如何从它们中提取基本的 pubsub 功能,以便我可以将其封装在类似上面的界面

再次使用WCF(通过 MSMQ) ,这看起来是一个不错的选择,但鉴于我离 WCF 专家还很远,我想确保这是在我开始深入研究之前要走的路

到目前为止,我们的方法一直依赖于 PGM 多播,它运行得很好,但是在没有网卡的情况下工作的新要求迫使我们使用另一种机制进行离线工作,至少据我所知

谢谢!

0 投票
1 回答
1188 浏览

flash - Options for playing multicast video on a web page

Assuming a network hierarchy that supports video multicasting, what options are there today to tap into this stream from a web page?

I've seen some references to this with Silverlight and project Star Light, which I unfortunately have no experience with. It also feels like a third option behind HTML5 and Flash.

What is out there on the market today that can handle this?

0 投票
1 回答
1178 浏览

.net-3.5 - 无法在 Windows Server 2008 上接收多播

我有以下代码在我的 Windows 2003 服务器上运行良好:

然而,在我的 Windows 2008 R2 服务器(在 VMWare Workstation 内运行,将单个网络适配器配置为 NAT)上,我的应用程序没有收到任何数据包。

如果我运行wireshark,它表明数据包正在传送到机器(它们看起来正确并且它们具有正确的多播IP和端口)但应用程序层没有收到任何信息(它在.Receive中永远阻塞)

我错过了什么吗?

0 投票
3 回答
4827 浏览

linux - Linux 多播中排队/缓冲延迟的可能位置在哪里?

我们在 LAN 上的许多 Linux 服务器上大量使用多播消息传递。我们看到很多延误。我们基本上会发送大量的小包裹。我们更关心延迟而不是吞吐量。这些机器都是现代的多核机器(如果算上超线程,至少有 4 个,通常是 8 个,16 个)机器,负载总是 2.0 或更低,通常负载小于 1.0。网络硬件的容量也低于 50%。

我们看到的延迟看起来像排队延迟:数据包将迅速开始增加延迟,直到看起来它们堵塞,然后恢复正常。

消息传递结构基本上是这样的:在“发送线程”中,从队列中拉出消息,添加时间戳(使用gettimeofday()),然后调用send(). 接收程序接收消息,为接收时间加上时间戳,并将其推送到队列中。在一个单独的线程中,处理队列,分析发送和接收时间戳之间的差异。(请注意,我们的内部队列不是问题的一部分,因为时间戳是在我们的内部队列之外添加的。)

我们真的不知道从哪里开始寻找这个问题的答案。我们不熟悉 Linux 内部结构。我们的怀疑是内核在发送端或接收端(或两者)对数据包进行排队或缓冲。但我们不知道如何追踪和追踪它。

值得一提的是,我们使用的是 CentOS 4.x(RHEL 内核 2.6.9)。

0 投票
1 回答
3276 浏览

c# - 如何在 C# 中确定多播数据包的源 IP?

我需要确定向我发送多播数据包的机器的 IP,以便我可以通过单播对其进行响应。

我正在使用以下 csharp (.Net 3.5) 代码通过多播连接接收数据包(为简洁起见,对代码进行了编辑,删除了错误检查和不相关的选项):

这是回调,我正在尝试获取源 IP:

我知道正确的源 IP 在 IP 标头中,因为当我在 Wireshark 中嗅探数据包时,我可以清楚地看到它。但是,上面的代码并没有打印出发送系统的 IP (192.168.3.4),而是打印出我订阅的多播组的 IP (225.2.2.6)。有没有办法获取源IP?

0 投票
2 回答
962 浏览

hibernate - Ehcache - 分布式 RMI 不工作

我对 ehcache 2.0 有一个奇怪的问题,希望有人可以帮助我。我已经建立了一个由两台主机 A 和 B 组成的集群。我可以看到两端都收到了心跳,所以我很确定网络和多播工作正常。问题是我将一个元素放入主机 A 的缓存中,我可以在主机 B 的日志中看到它接收到远程放置。但是当我从主机 B 请求相同的元素时,它会运行到数据库并执行查询。这可能是什么原因?感谢您的任何指点!

0 投票
1 回答
4199 浏览

java - Android 2.0.1(目前在 DROID 上)的多播是否损坏或者我错过了什么?

此代码在 Ubuntu、Windows 和 Mac OS X 中完美运行。它也适用于运行 Android 2.1.1 的 Nexus One。

我开始发送和收听多播数据报,所有的计算机和 Nexus One 都可以完美地看到对方。然后我在 Droid (固件 2.0.1)上运行相同的代码,每个人都会收到 Droid 发送的数据包,但 droid 只会监听它自己的数据包

这是run()一个线程的方法,它不断地在多播组上侦听发送到该组的传入数据包。

我在路由器中启用了多播支持的本地网络上运行我的测试。我的目标是通过将数据包广播到多播组,使设备在上线时相互满足。

这是从每个可用的有效网络接口(不是环回接口)发送多播数据报的代码。

更新(2010 年 4 月 2 日) 我找到了一种让 Droid 的网络接口使用多播进行通信的方法:WifiManager.MulticastLock

然后当你完成...

完成此操作后,Droid 开始在多播组上发送和接收 UDP 数据报。

2010 年 7 月 6 日更新

根据请求,这是我当前的代码,下一个方法存在于一个抽象类中,可用于广播和多播接收器。

您的扩展类应该实现onInit()onDatagramReceived()

对于多播接收器,onInit() 看起来像这样:

0 投票
7 回答
10999 浏览

multithreading - TCP 多播和多线程

我需要想出可以可靠地多播到其他客户端的客户端。这意味着我将使用 TCP 在多播组内的客户端之间进行可靠连接。这不是 n^2 连接数吗?这对我来说似乎有点傻。难道/不应该有一种更容易可靠地多播的方法吗?

编辑:UNIX/C

编辑:我没有澄清多线程是如何发挥作用的。但如果我要打开 n^2 个连接,我想,我会是多线程的,这比我想要的更复杂。

0 投票
1 回答
323 浏览

.net - 创建可发现的网络资源 (.NET)

是否可以在 .NET 中创建可发现的网络资源?

我想要实现的是一种自动发现在专用网络上运行的应用程序的方法。该架构类似于客户端/服务器应用程序,但是服务器可以是网络上的任何计算机。虽然客户端不会知道将是服务器的特定 IP 地址。

我假设我需要某种形式的多播,但是在我什至不知道从哪里开始之前没有使用多播。

我猜当客户端启动时它会广播“有人在那里”消息。然后每个服务器可以响应其 IP 的详细信息以供将来通信。

非常感谢,阿迪

0 投票
1 回答
768 浏览

java - Java Media Framework 总是生成 TTL=1 的多播数据包

我需要生成一个 G711 多播音频流,并且遇到了作为 Java 媒体框架的一部分的 AVTransmit2 示例。

从根本上说这是可行的,但是多播数据包都将 TTL 设置为 1。

我发现一些文档表明 SessionAddress 可以指定一个 TTL 值,所以我尝试更改它,即 destAddr = new SessionAddress(ipAddr, port, 255);

我还发现一些评论说问题可能是由于 java 默认为 IPv6,所以我试图通过这样启动它来强制它到 ipv4:java -Djava.net.preferIPv4Stack=true -classpath "。" AVTransmit2 javasound://8000 239.1.10.65 20480

但是在wireshark中查看,数据包仍然有TTL=1

我正在使用 JMF2.1.1e

任何建议如何解决这个问题?