问题标签 [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 回答
3513 浏览

c++ - IPV6 链路本地组播

我试图弄清楚如何使用 IPV6 进行相当于 IPV4 广播的操作。

我正在创建一个非阻塞 IPV6 UDP 套接字。

从侧面广播我实际上只是在端口 12346 上发送到“FF02::1”。

在聆听方面,我发现我需要加入该小组,所以我做了以下事情:

但是 setsockopt 总是返回“WSAENOPROTOOPT”。为什么?谁能帮我解决这个问题?我完全不知所措。

编辑:我将级别更改为“IPPROTO_IPV6”,但现在我得到一个“WSAEINVAL”。

0 投票
2 回答
18643 浏览

c# - UDP组播在互联网上?

我不确定如何最好地解决我的问题。我有一个在远程机器上运行的服务,它接收和处理 UDP 数据包。我希望该服务能够将这些数据包重新发送给碰巧需要它们的任何人(可能没有人,通常是一台机器,但可能更多)

我认为 UDP 多播将是理想的 - 服务可以发送到多播组,无论有多少接收者已注册,或者即使没有。

但是,我希望能够通过互联网访问它,并且据我所知,使用 UDP 多播几乎不可能。我可以使用另一种方法来实现这一目标吗?

如果相关,我的客户端和服务都是用 C# 编写的。

0 投票
2 回答
3176 浏览

c# - 具有多个 NIC 的计算机上的 UDPClient 多播接收失败

我有一台带有多个 NIC 的计算机 - UDPClient 的发送方法不断失败。这是代码:

PORT = 5000 和 IP = 224.5.6.7 所以应该没问题。主要问题是我无法通过 recvSock.Receive() 行。我看到数据包通过wireshark进来 - 但代码不会处理它们......

想法?提前致谢!

编辑:我可以确认是多个 NIC 导致了问题 --- 代码在单个 NIC 上运行良好。取消注释 SetSocketOption 行应该允许它与多个 NIC 一起工作,但它仍然失败....想法?

0 投票
2 回答
9395 浏览

python - 在 Python 中发送和接收 IPv6 链路本地多播 UDP 数据报?

下面是一个简单的 IPv4 UDP 广播,然后监听所有接口。

我想调整它以发送和接收 IPv4 和 IPv6。

我已经四处寻找并尽可能多地阅读,并相信以下大致是我需要采取的路线:

  1. 创建一个 IPv6 套接字。
  2. 将套接字添加到链接或站点本地多播组。
  3. 将 UDP 数据包发送到正在使用的组的多播地址。

我得到的进一步信息是我可能需要绑定到几个接口,并告诉使用它的套接字setsockopt()它也应该接收多播数据包。最后getaddrinfo(),可以全面使用以优雅地“退回”到 IPv6 不可用的 IPv4。

我已经实现了很多,但主要是在多播部分上偶然发现。最好有完整的 Python 代码示例,或对所需常量和地址的生动描述。

0 投票
3 回答
25554 浏览

c - 加入多播组时调用 setsockopt 时出现错误“没有此类设备”

我有一个发送多播数据报的代码。一段关键的代码:

有时程序会成功执行(此时我有 IP - 192.168.80.122)。我可以通过wireshark 捕获我的多播数据报。没关系。

但是,如果我将我的 IP 更改为192.168.1.2,则在调用时会出错

而且我什至无法捕获我的多播数据包。什么都没有发送。哪里有毛病?

0 投票
1 回答
365 浏览

c# - 多播的 C# 主题名称

你知道在 C# 中是否可以通过多播使用 TOPIC 名称在客户端和服务器之间创建通信?

是否有任何课程或免费消息传递系统能够做到这一点?本质上,服务器打开通信并将数据发送到由主题名称表示的通道,即字符串,例如“MAIN_DATA”,并且订阅该主题的所有客户端(多个客户端,因为它是多播)可以从中获取数据。

问候

0 投票
1 回答
1005 浏览

.net - 如何使用 .NET 发送多播 ping?

如何在 .NET 中发送多播 ping?让网络上的所有计算机都响应?

0 投票
3 回答
2303 浏览

c++ - 如何使用 sendto() 发送结构

我创建了结构:

现在要使用 sendto 方法发送此结构,我正在对结构进行类型转换并将其发送回,如下所示:

但是,当我铸造我的 Struct ti 时char*,实际数据正在丢失它的值,而在调试时,我看到 sendbuf 包含一些其他值。

有人可以告诉我如何使用 sendto 发送上述结构吗?

0 投票
2 回答
2626 浏览

sockets - Windows-Linux-Mac 上的 UDP 套接字网络断开行为

我使用 UDP 多播使用 boost.Asio 制作了一个应用程序。我不认为这个问题是针对 boost.Asio 的,而是针对一般的套接字编程,因为 boost.Asio 的网络设施主要是对套接字函数的封装。

我基于多播示例( http://www.boost.org/doc/libs/1_44_0/doc/html/boost_asio/example/multicast/receiver.cpp 和 ~/sender.cpp)构建了应用程序并部署了它在 Windows、Linux 和装有 OSX Leopard 的 Mac 上运行的几台机器上。我很高兴所有平台上的多播都可以使用来自示例的代码开箱即用。

我遇到问题的地方是当我断开网络电缆时。当然,断开电缆总是会导致问题;)但是有一些细微的差异让我发疯。

我的测试设置总是如下:一台机器运行一个发送器和一个接收器,看看同一台机器是否接收到它自己的多播,另一台机器只运行接收器。我拉动运行发送器和接收器的机器上的网络线。

观察到的行为:

-显然接收器运行的机器不再收到任何消息。这是意料之中的;)

- 拔网线的机器运行windows时,发送方继续发送,同一台机器上的接收方继续接收。未检测到错误。似乎windows有一个内在的回退回环?

- 拔下网线的机器运行Mac OSX时,发送方继续发送,不显示错误信息,但同一台机器上的接收方不再接收。在你问之前,我检查了不设置禁用环回选项。

- 拔下网线的机器运行Linux时,发送方失败,提示boost::error "Network is unreachable"。显然,由于发送方无法发送数据,因此接收方不再接收任何内容。

对于 Linux,我可以通过捕获“无法访问”错误(或捕获错误写入的字节数)并在我的代码中设置一个标志来伪造 Windows 的行为,随后将所有数据发送到 127.0.0.1 而不是多播地址。我会定期检查多播端点上的 send_to 是否仍然产生错误以检测网络重新连接并返回多播。这就像一个魅力,因为接收器是 bind() 到 inaddr_any 的,因此也在 127.0.0.1 上侦听。

对于 Mac OSX,我无法注意到网络何时无法访问以保持本地计算机上接收器的服务。

我观察到在 Mac OSX 上,当重新插入网络电缆并且 DHCP 尚未获取新的 IP 地址时,我会立即收到“网络无法访问”错误。

所以基本上:我怎样才能在 MacOSX 上实现本地客户端仍然可以从本地发件人接收?要么像我在 Linux 上那样检测网络丢失,要么像 Windows 一样欺骗它。

非常感谢那些对网络编程有更深入了解的人的任何建议。

0 投票
3 回答
17686 浏览

android - Android 2.2 上的多播

有没有人让多播在 Android 2.2 上工作,特别是用于 Bonjour 服务检测的 JmDNS。Android 1.5->2.0 时间范围内有许多问题和答案,包括在 stackOverflow 上,表明不同程度的成功,以及错误跟踪器中的错误,表明它已修复并关闭,对于 2.2 ( http://code .google.com/p/android/issues/detail?id=2323)。我已经尝试过“TuneControl”源代码,但它在 ~1.5 上有效并且尚未更新,并且在 2.2 上不适用于我。

所以,问题... 1) 有没有在 2.2 上看到多播工作,特别是 JmDNS,特别是用于 Bonjour 服务检测?

2)在代码中需要什么才能使这项工作?

我正在使用适当的权限:

<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />

我获得了多播锁:

然后尝试启动 jmDNS 来寻找服务器:

侦听器永远不会看到任何服务。我已经使用 Wireshark 验证了请求数据包已发送,并且服务器进行了响应,但 jmDNS 库中的套接字侦听器代码从未看到响应数据包。

所以......我错过了什么吗?这仍然是一个错误吗?有没有人得到任何远程这样的工作???