消息
ZeroMQ 消息是在应用程序之间或同一应用程序组件之间传递的离散数据单元。从 ZeroMQ 本身的角度来看,消息被视为不透明的二进制数据。
在线路上传输时,ZeroMQ 消息是大小从零开始、适合内存的任意二进制块。你可以使用 protocol buffers、msgpack、JSON 或应用程序需要通信的任何其他方式进行自己的序列化。选择一种可移植的数据表示形式是明智的,但你可以自行决定权衡。
最简单的 ZeroMQ 消息由一个帧(也称为消息部分)组成。帧是 ZeroMQ 消息的基本线路格式。帧是一个长度指定的数据块。长度可以从零开始。ZeroMQ 保证要么传递消息的所有部分(一个或多个),要么都不传递。这允许你将帧列表作为单个在线路上传输的消息发送或接收。
消息(单部分或多部分)必须适合内存。如果你想发送任意大小的文件,应该将其分成多块,并将每块作为单独的单部分消息发送。使用多部分数据不会减少内存消耗。
使用字符串
将数据作为字符串传递通常是启动通信的最简单方式,因为序列化相当直接。对于 ZeroMQ,我们规定了规则:字符串是长度指定的,并且在线路上传输时不带末尾的 null 字符。
以下函数将一个字符串发送到 socket,其中字符串的长度等于帧的长度。
static void
s_send_string (void *socket, const char *string) {
zmq_send (socket, strdup(string), strlen(string), 0);
}
要从 socket 读取字符串,我们需要提供一个缓冲区及其长度。zmq_recv 方法会尽可能多地向缓冲区写入数据。如果数据超出缓冲区大小,多余的数据将被丢弃。我们使用返回的帧大小设置适当的 null 终止符,并返回检索到的字符串的副本。
// Receive string from socket and convert into C string
// Chops string at 255 chars, if it's longer
static char *
s_recv_string (void *socket) {
char buffer [256];
int size = zmq_recv (socket, buffer, 255, 0);
if (size == -1)
return NULL;
if (size > 255)
size = 255;
buffer [size] = \0;
/* use strndup(buffer, sizeof(buffer)-1) in *nix */
return strdup (buffer);
}
以下函数将 C 字符串作为单帧消息发送到 socket,其中字符串的长度等于帧的长度。
zstr_send (socket, "HELLO");
另一种选择是发送格式化字符串,类似于 printf。
zstr_sendf (socket, "%s-%d", "HELLO", 1);
要从 socket 读取字符串,只需调用 zstr_recv
函数。
char *string = zstr_recv (socket);
示例
messages_strings_send_recv
在
zmqpp
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/zmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
cppzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/cppzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
azmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/azmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
czmqpp
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/czmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
fbzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/fbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
以下函数将一个字符串发送到 socket。
socket.SendFrame("Hello");
要从 socket 读取字符串,只需调用 ReceiveFrameString
函数。
string str = socket.ReceiveFrameString();
示例
messages_strings_send_recv
在
clrzmq4
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/csharp/clrzmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
dartzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/dart/dartzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
Chumak
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/chumak
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
ezmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/ezmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
erlang-czmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/erlang-czmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
FsNetMQ
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fsnetmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
fszmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fszmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
zmq4
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/zmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
goczmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/goczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
zeromq4-haskell
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/haskell/zeromq4-haskell
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
以下函数将一个字符串作为单帧消息发送到 socket,其中字符串的长度等于帧的长度。
要从 socket 读取字符串,只需调用 recv
函数。
String hello = socket.recvStr()
如果你需要对帧本身有更多控制,可以使用 ZFrame 类。以下代码片段展示了如何从字符串创建帧并发送帧。
ZFrame stringFrame = new ZFrame("HELLO");
stringFrame.send(socket, 0);
要从 socket 读取帧并返回 ZFrame 对象,调用 ZFrame 类的静态 recvFrame 函数。如果内容是字符串,你可以使用 getString 方法并提供用于序列化的字符集来检索它。默认情况下,ZMQ.CHARSET 用于所有序列化和反序列化字符串的操作。
ZFrame stringFrame = ZFrame.recvFrame(socket);
String hello = stringFrame.getString(ZMQ.CHARSET);
示例
messages_strings_send_recv
在
JZMQ
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
jczmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
zeromqjs
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/nodejs/zeromqjs
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
perlzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/perl/perlzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
Pyzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/python/pyzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
rbzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/ruby/rbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
rust-zmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/rust/rust-zmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
示例
messages_strings_send_recv
在
zzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/zig/zzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
由于我们利用帧的长度来反映字符串的长度,我们可以将每个字符串放入单独的帧中来发送多个字符串。
以下函数将字符串数组发送到 socket。ZMQ_SNDMORE 标志告诉 ZeroMQ 推迟发送,直到所有帧都准备好。
static void
s_send_strings (void *socket, const char[] *strings, int no_of_strings) {
for (index = 0; index < no_of_strings; index++) {
int FLAG = (index + 1) == no_of_strings ? 0 : ZMQ_SNDMORE;
zmq_send (socket, strdup(strings[index]), strlen(strings[index]), FLAG);
}
}
要从多部分消息中检索字符串帧,在调用 zmq_recv()
后,必须使用 ZMQ_RCVMORE zmq_getsockopt()
选项来确定是否还有更多部分要接收。
char *strings[25];
int rcvmore;
size_t option_len = sizeof (int);
int index = 0;
do {
strings[index++] = s_recv_string (socket);
zmq_getsockopt (socket, ZMQ_RCVMORE, &rcvmore, &option_len);
} while (rcvmore);
使用 zstr_sendm
函数可以发送多个字符串帧。此函数会推迟消息的实际发送,直到最后一个帧准备就绪。
zstr_sendm (socket, "HELLO");
zstr_sendm (socket, "beautiful");
zstr_send (socket, "WORLD!");
或者使用 zstr_sendx
函数甚至更简单。最后一个参数必须是 NULL!
zstr_sendx (socket, "HELLO", "beautiful", "WORLD!", NULL);
如果你喜欢使用消息对象而不是通过发送多个帧来构建消息,可以使用 zmsg
类。
zmsg_t *strings = zmsg_new ();
zmsg_addstr ("HELLO");
zmsg_addstr ("beautiful");
zmsg_addstr ("WORLD");
zmsg_send (&strings, socket);
要接收一系列字符串帧,使用 zstr_recvx
函数。每个字符串都会被分配并填充字符串数据!
char *hello, beautiful, world;
zstr_recvx (socket, &hello, &beautiful, &world, NULL);
或者在使用 zmsg
的情况下
zmsg_t *strings = zmsg_recv (socket);
char *hello = zmsg_popstr (strings);
char *beautiful = zmsg_popstr (strings);
char *world = zmsg_popstr (strings);
示例
messages_strings_send_recv_multi
在
zmqpp
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/zmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
cppzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/cppzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
azmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/azmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
czmqpp
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/czmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
fbzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/fbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
使用 SendMoreFrame
函数可以发送多个字符串帧。此函数会推迟消息的实际发送,直到最后一个帧准备就绪。
socket.SendMoreFrame("HELLO")
.SendMoreFrame("beautiful")
.SendMore("WORLD!");
要接收一系列字符串,调用 ReceiveMultipartStrings
函数。它将返回一个字符串列表。
List<string> strings = socket.ReceiveMultipartStrings();
示例
messages_strings_send_recv_multi
在
clrzmq4
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/csharp/clrzmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
dartzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/dart/dartzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
Chumak
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/chumak
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
ezmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/ezmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
erlang-czmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/erlang-czmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
FsNetMQ
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fsnetmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
fszmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fszmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
zmq4
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/zmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
goczmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/goczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
zeromq4-haskell
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/haskell/zeromq4-haskell
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
使用 sendMore
方法可以在一条消息中发送多个字符串帧。此方法会推迟消息的实际发送,直到最后一个帧发送完毕。
socket.sendMore (socket, "HELLO");
socket.sendMore (socket, "beautiful");
socket.send (socket, "WORLD!");
你可以使用 ZMsg 类来构建多帧消息,而不是使用 socket 的发送 API。
ZMsg *strings = new ZMsg();
strings.add("HELLO");
strings.add("beautiful");
strings.add("WORLD");
strings.send(socket);
要接收一系列字符串帧,多次调用 recvStr
函数。
String hello = socket.recvStr();
String beautiful = socket.recvStr();
String world = socket.recvStr();
要一次调用检索整个消息,使用 ZMsg 类的静态 recvMsg 方法。
ZMsg strings = ZMsg.recvMsg(socket);
String hello = strings.popString();
String beautiful = strings.popString();
String world = strings.popString();
示例
messages_strings_send_recv_multi
在
JZMQ
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
jczmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
zeromqjs
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/nodejs/zeromqjs
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
perlzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/perl/perlzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
Pyzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/python/pyzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
rbzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/ruby/rbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
rust-zmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/rust/rust-zmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
示例
messages_strings_send_recv_multi
在
zzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/zig/zzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
更多
了解更多关于使用消息的信息
示例
messages_functions
在
zmqpp
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/zmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
cppzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/cppzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
azmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/azmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
czmqpp
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/czmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
fbzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/fbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
clrzmq4
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/csharp/clrzmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
dartzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/dart/dartzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
Chumak
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/chumak
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
ezmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/ezmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
erlang-czmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/erlang-czmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
FsNetMQ
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fsnetmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
fszmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fszmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
zmq4
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/zmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
goczmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/goczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
zeromq4-haskell
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/haskell/zeromq4-haskell
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
JZMQ
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
jczmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
zeromqjs
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/nodejs/zeromqjs
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
perlzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/perl/perlzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
Pyzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/python/pyzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
rbzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/ruby/rbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
rust-zmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/rust/rust-zmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
示例
messages_functions
在
zzmq
中缺失。您想贡献吗?请按照以下步骤操作
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/zig/zzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md