名称

zmq_udp - 0MQ UDP 组播和单播传输协议

概要

UDP 是一种在 IP 网络上进行数据传输的不可靠协议。UDP 同时支持单播和组播通信。

描述

UDP 传输仅适用于 'ZMQ_RADIO' 和 'ZMQ_DISH' 套接字类型。

地址

0MQ 端点是一个字符串,由 'transport'`://` 后跟一个 'address' 组成。'transport' 指定了要使用的底层协议,而 'address' 指定了特定于该传输的连接地址。

对于 UDP 传输,其 transport 为 udp。'address' 部分的含义将在下面定义。

绑定套接字

使用 'udp' 时,我们只能绑定 'ZMQ_DISH' 套接字类型。当使用 zmq_bind() 函数绑定套接字并使用 'udp' 传输协议时,'endpoint' 应被解释为一个 'interface',后跟一个冒号和要使用的 UDP 端口号。

'interface' 可以通过以下任何一种方式指定:

  • 通配符 *,表示所有可用的网络接口。

  • 网络接口的名称(例如 eth0, lo, wlan0 等...​)。

  • 分配给该接口的主地址,以数字形式表示。

  • 套接字应加入的组播地址,以数字形式表示。

UDP 端口号可以指定为一个数值,通常在 POSIX 系统上大于 1024。

连接套接字

使用 'udp' 时,我们只能连接 'ZMQ_RADIO' 套接字类型。当使用 zmq_connect() 函数连接套接字到对等地址并使用 'udp' 传输协议时,'endpoint' 应被解释为一个 'peer address',后跟一个冒号和要使用的 UDP 端口号。

'peer address' 可以通过以下任何一种方式指定:

  • 对等方的 IPv4 或 IPv6 地址,以数字形式表示或使用其主机名。

  • 组播地址,以数字形式表示。

示例

绑定套接字
//  Unicast - UDP port 5555 on all available interfaces
rc = zmq_bind(dish, "udp://*:5555");
assert (rc == 0);
//  Unicast - UDP port 5555 on the local loop-back interface
rc = zmq_bind(dish, "udp://127.0.0.1:5555");
assert (rc == 0);
//  Unicast - UDP port 5555 on interface eth1
rc = zmq_bind(dish, "udp://eth1:5555");
assert (rc == 0);
//  Multicast - UDP port 5555 on a Multicast address
rc = zmq_bind(dish, "udp://239.0.0.1:5555");
assert (rc == 0);
//  Same as above but joining only on interface eth0
rc = zmq_bind(dish, "udp://eth0;239.0.0.1:5555");
assert (rc == 0);
//  Same as above using IPv6 multicast
rc = zmq_bind(dish, "udp://eth0;[ff02::1]:5555");
assert (rc == 0);
连接套接字
//  Connecting using an Unicast IP address
rc = zmq_connect(radio, "udp://192.168.1.1:5555");
assert (rc == 0);
//  Connecting using a Multicast address
rc = zmq_connect(socket, "udp://239.0.0.1:5555);
assert (rc == 0);
//  Connecting using a Multicast address using local interface wlan0
rc = zmq_connect(socket, "udp://wlan0;239.0.0.1:5555);
assert (rc == 0);
//  Connecting to IPv6 multicast
rc = zmq_connect(socket, "udp://[ff02::1]:5555);
assert (rc == 0);

参阅

作者

此页面由 0MQ 社区编写。要进行修改,请阅读位于 https://zeromq.cn/how-to-contribute/ 的 0MQ 贡献政策。