名称
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 贡献政策。