我正在尝试使用zeromq套接字作为C ++中的原始TCP客户端套接字。我有一个TCP服务器在一个不同的程序,我想发送数据。当我将Zeromq客户端连接到服务器时,我…
当您发送或接收任何内容时 ZMQ_STREAM 类型套接字第一个数据框应该是一个标识符,指示后续帧应该去哪里或它们来自何处。
ZMQ_STREAM
使用时 ZMQ_STREAM 套接字作为服务器(即你打电话 bind 在套接字上)然后你可以用它提取这个身份框架 recv 并在您回复时重新发送。
bind
recv
当用作客户时(即你打电话 connect 在套接字上)然后你需要从套接字获取标识,你可以通过 getsockopt 随着 ZMQ_IDENTITY 旗。
connect
getsockopt
ZMQ_IDENTITY
标识大小限制为最多255个字节。
// get the id after you've called connect std::size_t id_size = 256; char id[ 256 ]; socket->getsockopt( ZMQ_IDENTITY, &id, &id_size ); // send the id frame socket->send(id, id_size, ZMQ_SNDMORE); // then your data char message[] = "HELLO, WORLD!"; socket->send(message, strlen(message), ZMQ_SNDMORE);
关于ZMQ_STREAM的文档详细介绍了如何通知您并控制连接,断开连接等。