标签: multicast

绑定到 mac os x 上的 mdns 多播地址

我想绑定到 mac os x 计算机上的多播 DNS 组和端口,以构建一些 bonjour 功能的原型。但是,当我尝试绑定到端口时,出现以下错误(顺便说一句,这是从 python 运行的):

socket.error: [Errno 48] Address already in use
Run Code Online (Sandbox Code Playgroud)

看起来 mDNSResponder 绑定到地址:未设置 SO_REUSEADDR 的端口。

是否可以以允许其他代理绑定到地址:端口组合的方式运行 mDNSResponder?

python sockets macos mdns multicast

2
推荐指数
1
解决办法
2852
查看次数

在错误的NIC上发送UDP多播(Java,Mac OS X)

在Mac OS X(Lion,10.7.2,Java版本"1.6.0_29")下处理Java应用程序时,我在尝试发送多播UDP数据报时遇到了一个奇怪的问题.数据包仅在一个NIC上发送,我无法控制哪个.

以下示例代码说明了我要执行的操作:

public class MCast {
    public static void main(String[] args) throws IOException {
        InetAddress multicastAddr = InetAddress.getByName("224.0.0.1");
        int port = 58680;
        byte[] data = "test".getBytes();

        DatagramPacket packet = new DatagramPacket(data, data.length, multicastAddr, port);

        MulticastSocket socket = new MulticastSocket();
        socket.joinGroup(multicastAddr);
        socket.setNetworkInterface(NetworkInterface.getByName("en0"));

        socket.send(packet);
        System.out.println("Packet sent.");
    }
}
Run Code Online (Sandbox Code Playgroud)

在执行此代码时,我使用Wireshark检查en0上发出的所有流量.在指定的端口上没有发送数据包.但是,所述数据包确实出现在en1的跟踪上.

当我禁用en1时,数据包在en0上正常运行.

我在这里不知所措.有谁知道发生了什么?

java macos udp multicast

2
推荐指数
1
解决办法
1974
查看次数

具有双以太网接口的 ffmpeg 工作错误

具有双接口的服务器。

  1. 其中一个(eht0)用于WAN,为互联网用户提供http/ssh服务。

  2. 另一个(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         UG    100    0        0 eth1
Run Code Online (Sandbox Code Playgroud)

或者

rrca@rcasnap02:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
218.108.132.176 * …
Run Code Online (Sandbox Code Playgroud)

linux ffmpeg multicast

2
推荐指数
1
解决办法
1万
查看次数

IPv6 组播示例

我已经搜索了如何实现一个简单的 ipv6 多播示例的示例,但是我只找到了使用 ipv4 的示例。

任何人都可以提供一个简单的“helloworld”ipv6 多播示例吗?

java multicast ipv6 multicastsocket

2
推荐指数
1
解决办法
5406
查看次数

ping 224.0.0.1 没有回复

这些天我在玩多播,遇到了一些我不明白的奇怪事情。

我创建了一个聊天多播客户端,一切似乎都正常。之后,我阅读了一些 linux 文档并发现通过 ping 224.0.0.1 应该从加入某个多播组的所有节点返回我的回复。我在 xp 和 win7 机器上试过。两者的行为是相同的。我的客户似乎只加入我定义的组 (224.0.19.1)。它不加入 224.0.0.1 组。

来自wireshark:[source ip] 224.0.0.22 IGMPv3 54 Membership Report / Join group 224.0.19.1 for any source

这是我设置套接字的方式:

        IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse(port));

        m_socket.Bind(ipep);

        IPAddress ip = IPAddress.Parse(mcastGroup);

        m_socket.SetSocketOption(
            SocketOptionLevel.IP, SocketOptionName.AddMembership, 
            new MulticastOption(ip, IPAddress.Any));
Run Code Online (Sandbox Code Playgroud)

然后我检查了netsh:

C:\Users\user1>netsh interface ip show joins

Interface 1: Loopback Pseudo-Interface 1

Scope       References  Last  Address
----------  ----------  ----  ---------------------------------
0                    2  Yes   239.255.255.250

Interface 11: LAN

Scope       References  Last  Address
----------  ----------  ----  --------------------------------- …
Run Code Online (Sandbox Code Playgroud)

windows ip networking network-programming multicast

2
推荐指数
1
解决办法
9912
查看次数

ElasticSearch Multicast无法在Linode中运行

我在相同的数据中心有2个新的Ubuntu Linode,除了不同的节点名称之外,它们具有相同的ES配置.群集名称相同.他们每个人都可以互相卷曲ElasticSearch服务器并且还没有防火墙,但多播不起作用,我无法弄清楚原因.它们都将自己选为主节点,并且没有记录其他节点或集群的任何内容.

是否有任何理由为什么多播不能在这样的环境中工作?

multicast cluster-computing linode elasticsearch

2
推荐指数
1
解决办法
640
查看次数

谁能解释为什么我的 java 代码多播不能通过 LAN 工作?

我在下面有两个应用程序。我用javaMulticastSocket来发送和接收DatagramPacket

发件人

public class Sender {

    public static void main(String[] args) throws IOException {
        int port = 5000;
        String group = "225.4.5.6";
        final MulticastSocket s = new MulticastSocket();
        byte[] buf = new byte[10];
        for (int i = 0; i < buf.length; i++) {
            buf[i] = (byte) i;
        }
        final DatagramPacket pack = new DatagramPacket(buf, buf.length,
                InetAddress.getByName(group), port);
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {

            @Override
            public void run() {
                try {
                    s.send(pack);
                    System.out.println("Sent");
                } catch …
Run Code Online (Sandbox Code Playgroud)

java networking multicast

2
推荐指数
1
解决办法
978
查看次数

到 Kubernetes 的多播流量

我希望我的 pod 接收从我的 kubernetes 集群外部流向我节点中特定端口的多播网络流量。

我正在考虑两种解决方案:

  1. hostNetwork: true标志yamlhostPort配置一起添加到他们的文件中,以便直接接收到 pod 的流量。
  2. 使用命令在节点上本地转发流量从一个eth0接口到docker0另一个接口iptables

方法1是Kubernetes的官方特性,但是感觉就像打破了docker最初强加的安全墙,可能会导致与主机进程的端口冲突等。

另一方面,方法 2 将多播网络流量透明地转发到 pod。
尽管我可以使用自动化工具来传播此配置(ansible/salt 等),但任何配置“超出 Kubernetes 范围”的东西对我来说都感觉有点棘手。

想听听您的优点和缺点、评论,以及多播到 kubernetes 集群的问题的其他解决方案。

networking multicast docker kubernetes

2
推荐指数
1
解决办法
8289
查看次数

看不到来自另一台设备的 UDP 多播消息

我有一台 Windows 机器,我有两个脚本通过 UDP 多播(在同一台机器上)发送和接收消息。我有一个 C 和 Python3 实现。Python3 看起来像这样:

发件人.py

import socket

MCAST_GRP = '239.1.1.1'
MCAST_PORT = 1234

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
print("Sending")
sock.sendto(bytearray("str()", "utf-8"), (MCAST_GRP, MCAST_PORT))

data, address = sock.recvfrom(1024)
print('received %s bytes from %s' % (len(data), address))
print(data)
Run Code Online (Sandbox Code Playgroud)

接收器.py

import socket
import struct
import sys

multicast_group = '239.1.1.1'
server_address = ('', 1234)

# Create the socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Bind to the server address
sock.bind(server_address)

# Tell the operating system to …
Run Code Online (Sandbox Code Playgroud)

python udp interface multicast python-3.x

2
推荐指数
1
解决办法
2524
查看次数

使用 GNAT.Sockets 接收多播流量

我正在 Ada 中试验 IP 多播,但似乎没有收到发送到多播组的任何流量。不知何故,我似乎无法让应用程序获取传入的数据包。

我可以验证(使用 Wireshark)是否从我的计算机发送了多播加入,并且我还可以验证是否有数据发送到多播组。

我可以验证操作系统是否已通过 netsh 命令注册了多播加入:

netsh interfaces ip show joins
Run Code Online (Sandbox Code Playgroud)

如果我运行我的程序,则列出的组的引用为 1;如果不运行,则引用为 0。

以下过程显示了我的侦听器,我使用Mcast_IP => "239.255.128.128"和调用它Mcast_Port => "8807"

with GNAT.Sockets;
with Ada.Streams;
with Ada.Text_IO;

   procedure Receive_Multicast (Mcast_IP   : in String;
                                Mcast_Port : in String)
   is
      package GS renames GNAT.Sockets;
      package AS renames Ada.Streams;
      package Tio renames Ada.Text_IO;

      use GS;

      use type Ada.Streams.Stream_Element_Offset;
      Socket  : GS.Socket_Type;
      Address : GS.Sock_Addr_Type;
      Data    : AS.Stream_Element_Array (1 .. 2**16);
      Offset  : AS.Stream_Element_Offset;
      Sender  : GS.Sock_Addr_Type;
   begin …
Run Code Online (Sandbox Code Playgroud)

sockets multicast ada gnat windows-10

2
推荐指数
1
解决办法
667
查看次数