Articles of 多播

2个Weblogic集群在同一个networking中

我们有2个服务器(dev / int),其中一个有3个Weblogic集群,一个托pipe服务器和不同的mutlicast地址。 服务器1具有组播地址239.192.3.7和239.192.3.8和239.192.3.9 服务器2具有组播地址239.192.4.7和239.192.4.8和239.192.4.9 pipe理员和受pipe服务器启动时没有错误。 受pipe理的服务器连接到他的群集,它看起来不错。 两台服务器都在同一个networking(abcd / 24)并连接到相同的交换机。 如果我将服务部署到此群集中的一个,例如239.192.3.7,则收到超时。 在netstat我看到从服务器2(239.192.4.7)到另一个集群的连接。 在这个集群(server2)的日志中,我看到了server1的服务部署尝试。 所以在停止了server2的集群之后,我可以毫无困难地在server1上部署这个服务。 哪里有问题? 在一个networking中多播多播地址? 所以也许有人可以帮助我,谢谢! 编辑(10.05.2013): 前几天我用他的3个群集configuration来安装这个服务器。 也许我的configuration有错误。 在这个新的安装中,我有同样的错误,现在我再次使用netstat -la –numeric-ports再次查看server2,并查看到另一个server1的两个连接。 它看起来像这样: tcp 0 0 server2:8088 server1:57963 ESTABLISHED tcp 2 0 server2:7890 server1:34010 ESTABLISHED 每个连接都将从托pipe服务器开始创build。 但只有这两个连接与每个相同的源端口。

Ubuntu C ++多播双人群消息

我正在使用Ubuntu 16.04。 C ++代码来创build一个连接/离开多播组的UDP套接字。 join/离开团队的代码工作正常,但我正在玩它,发现wireshark中的东西,我无法find有关它的信息。 当我呼叫离开组之前代码退出。 Wireshark提取2条离开组消息。 我认为,当代码退出内核将closures套接字并发送离开组消息? 但为什么2? 它总是2。 编辑:另外,当我呼吁离开组wireshark拿起2离开组消息。 我相信这个函数只能执行一次(因为打印)。 2消息是否正常行为? 另外我添加了打印到连接function,它只被调用一次,但有时wireshark拿起2join消息? 这有时会发生。 我不知道这个。 但是代码起作用了,所以我认为这个行为与内核如何处理这些事情有关。 在代码中我做了这样的join ip_mreq multicastRequest; std::cout << "joinGroup called" << std::endl; multicastRequest.imr_multiaddr.s_addr = inet_addr(multicastGroup.c_str()); multicastRequest.imr_interface.s_addr = inet_addr(interfaceAddress(interface).c_str()); setsockopt(sockDesc_, IPPROTO_IP, IP_ADD_MEMBERSHIP,&multicastRequest, sizeof(multicastRequest)) 并请假: ip_mreq multicastRequest; std::cout << "leaveGroup called" << std::endl; multicastRequest.imr_multiaddr.s_addr = inet_addr(multicastGroup.c_str()); multicastRequest.imr_interface.s_addr = inet_addr(interfaceAddress(interface).c_str()); setsockopt(sockDesc_, IPPROTO_IP, IP_DROP_MEMBERSHIP,&multicastRequest, sizeof(multicastRequest))

带双以太网接口的ffmpeg工作不正常

一个双接口的服务器。 一个(eht0)用于WAN,为因特网用户提供http / ssh服务。 另一个(eth1)用于从内网接收组播数据。 218.108.132.177是公网网关。 125.210.198.1是专用网关。 233.49.3。* / 24是多播地址。 10.0.11。* / 24是组播数据的来源。 当路由表如下所示时,ffmpeg无法从eth1读取udp数据,ffmpeg挂起: rrca@rcasnap02:~$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 218.108.132.176 * 255.255.255.252 U 0 0 0 eth0 125.210.198.0 * 255.255.255.240 U 0 0 0 eth1 default 218.108.132.177 0.0.0.0 UG 100 0 0 eth0 default 125.210.198.1 0.0.0.0 […]

我怎样才能在c linux的特定接口上收听广播?

我现在只需要这样做就可以收听我写的一个简单的广播服务器(它只是播放“hello”): int fd = socket(PF_INET, SOCK_DGRAM, 0); struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); add.sin_family = AF_INET; add.sin_port = htons(10074); bind(fd, struct sockaddr*) &addr, sizeof(addr)); char buf[800]; recvfrom(fd, buf, sizeof(buf), 0, NULL, 0); 我想知道的是,上面将使用什么接口? 某种默认? 而我该如何改变我听广播的界面呢? 我已经看到它在组播中通过在ip_mreqn结构中设置imr_address和imr_ifindex ,但我不知道是否有广播的等价物。

对使用普通套接字的ipv6多播有什么要求?

我正在处理一个旧的代码库,其中ipv6多播似乎不工作。 当我尝试绑定()套接字到ff01 :: 1,它失败。 套接字正在我的以太网接口中创build。 将套接字绑定到“::”in6addr_any会导致绑定成功,但除了应用程序本身使用给定的套接字(设置了IPV6_MULTICAST_LOOP)发送的套接字外,没有收到任何数据包。 这些数据包似乎永远不会离开应用程序。 在尝试捕获以太网接口中的数据包时,它们在wireshark中不可见。 只有传入的外部多播数据包可见。 他们都没有达到我的申请。 系统是Ubuntu 16.04与Linux 4.4.0。 设置代码示例: #define MCASTADDRC "ff01::1" int mcast::bind_mcast(const char *interface) { this->net = socket(AF_INET6, SOCK_DGRAM, 0); inet_pton(AF_INET6,MCASTADDRC,&this->multicast.ipv6mr_multiaddr); this->ifaceaddr.sin6_family = AF_INET6; this->ifaceaddr.sin6_port = htons(SRVPORT); this->ifaceaddr.sin6_addr = in6addr_any; // interface for multicast this->mcastaddr.sin6_family = AF_INET6; this->mcastaddr.sin6_port = htons(SRVPORT); this->mcastaddr.sin6_addr = this->multicast.ipv6mr_multiaddr; int opcoes = fcntl(this->net, F_GETFL, […]

UDP多播:由计算机接收,但不是由应用程序接收

我试图在Linux上设置一个应用程序来通过WiFi接收通过UDP组播的MIDI数据。 Wireshark显示从MIDI控制器发送的数据包由我的机器接收( 从wireshark粘贴 )。 我用来监听networkingstream量和产生ALSA MIDI事件(称为多播 )的实用程序的源代码设置了这样的监听套接字。 基本上它设置了20个套接字,将它们绑定到端口21928-21948,用IP_ADD_MEMBERSHIP调用setsockopt()给“225.0.0.37”组,然后开始监听。 据我所知,这是与所有关于如何侦听UDP多播stream量的教程和build议一致的。 但是,实用程序不会收到数据。 如果从我的PC发送数据包到“225.0.0.37”( s.sendto("hello", ("225.0.0.37", 21928))上的相关端口,该工具仍然不会收到数据。 如果我发送到本地主机上的端口( s.sendto("hello", ("", 21928)) ),它确实接收到数据。 我一直在阅读和尝试很多,但是我不知道我错过了什么。 我甚至不确定这是我使用的代码还是在我的盒子的configuration中的错误。 任何人都可以对此发光吗?

从eth0发送组播到eth1

我需要从eth0接口发送组播数据,并在Linux机器的eth1上接收。 我在C中有2个程序,PROG-1执行setsockopt IP_MULTICAST_IF,以便它从eth0发送,PROG-2在eth1上joinmcast组(通过netstat -ngvalidation),但是在eth1上看不到任何组播stream量。 我只能在eth0上看到多播数据。 我增加了TTL,但没有帮助。 有没有什么办法可以接收来自eth1 eth0的组播信息? IP_MULTICAST_LOOP也没有帮助,只有当两个程序在同一个接口上工作时,它才起作用,这对我没有好处。 这是一个通过ipv4的自定义协议。 发件人代码: sock_fd = socket( AF_INET, SOCK_RAW, 100 ); srcip = inet_addr("10.1.231.112"); /* src mcast from eth0 */ ret_val = setsockopt( sock_fd, IPPROTO_IP, IP_MULTICAST_IF, &srcip, sizeof( srcip )); ttl = 0x2; ret_val = setsockopt( sock_fd, IPPROTO_IP, IP_MULTICAST_TTL, ( char * ) &ttl, sizeof( ttl )); dest_addr.sin_addr.s_addr […]

使用ip route add将组播路由添加到多个设备

TLDR:有没有办法使用“ip route”为多个NIC添加组播路由? 我们有软件将绑定到不同NICS上的不同IP地址的两个套接字连接到两个独立的多播组,例如,套接字1绑定到192.168.0.2,并join到组播组233.255.10.1,而套接字2绑定到10.57.31.2并join到多播组239.255.100.1。 我们正在使用bash脚本(Linux内核3.14.39)在两个networking接口上使用路由来设置组播路由 route add -net 224.0.0.0 netmask 240.0.0.0 eth0 route add -net 224.0.0.0 netmask 240.0.0.0 eth1 并通过路由-n进行validation Destination Gateway Genmask Flags Metric Ref Use Iface 224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth0 224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth1 我最近读了这条路线已经过时/过时,我们应该使用ip路由,例如 ip route add 224.0.0.0/4 dev eth0 ip route add 224.0.0.0/4 dev […]

到所有接口的组播路由

这与如何多播发送到所有networking接口不一样? 其中要求一个解决scheme,只能在一个程序中工作,并要求源访问 – 我没有。 我有一堆程序产生组播stream量,我希望在我的networking上看到无线networking和以太网,但是我也希望它们在networking出现故障时不会死于“无路由”。 所以我真正想要的是将所有组播stream量从一台机器路由到所有可用的接口,或者在没有接口的情况下进行环回。 在Linux上,我可以说: sudo ifconfig lo multicast sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev lo 但这意味着使用eth0或wlan0的用户无法获得组播信息。 同样我可以说: sudo ifconfig lo multicast sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 但是,然后wlan0不会得到多播。 更糟糕的是,如果所有接口出现故障,我的程序只会崩溃,出现“没有路由到任何组播IP”的情况。 我怎么路由的东西,使他们去所有的适配器,包括环回?

Linux桥默认启用组播查询器

有没有人知道如何启用组播查询默认桥? 例如,我有应用程序,现在会创build一些桥梁。 如果我想在这些网桥上启用组播查询器,我可以手动将文件更新为1。 echo“1”> / sys / devices / virtual / net / virbr0 / bridge / multicast_querier 是否有可能默认启用它? 所以一旦创build新的网桥,就启用组播查询器。 谢谢!