无法从 Zeromq 客户端向 TCP 服务器发送数据
Unable to send data from Zeromq client to TCP server
我正在尝试使用 zeromq 套接字作为 C++ 中的原始 TCP 客户端套接字。
我在另一个程序中有一个 TCP 服务器,我想将数据发送到该服务器。
当我将 Zeromq 客户端连接到服务器时,我能够从服务器接收数据但无法将数据发送到 TCP 服务器。
发送时出现以下错误:未处理的错误,zmq::error_t
知道如何让它发挥作用吗?
zmq::context_t *ctx = new zmq::context(100, 100);
void *raw_socket = new zmq::socket_t(*ctx, ZMQ_STREAM);
zmq::socket_t *socket = static_cast<zmq::socket_t*>(raw_socket);
socket->connect("tcp://127.0.0.1:5555");
char message[] = "HELLO, WORLD!"
socket->send(message, strlen(message), ZMQ_SNDMORE)
当你在 ZMQ_STREAM
类型的套接字上发送或接收任何东西时,第一个数据帧应该是一个标识符,指示后续帧应该去哪里或来自哪里。
当使用 ZMQ_STREAM
套接字作为服务器时(即您在套接字上调用 bind
),那么您可以使用 recv
提取此标识帧并在您响应时重新发送它.
当用作客户端时(即您在套接字上调用 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 上的文档更详细地介绍了如何通知您以及如何控制连接、断开连接等。
我正在尝试使用 zeromq 套接字作为 C++ 中的原始 TCP 客户端套接字。 我在另一个程序中有一个 TCP 服务器,我想将数据发送到该服务器。 当我将 Zeromq 客户端连接到服务器时,我能够从服务器接收数据但无法将数据发送到 TCP 服务器。 发送时出现以下错误:未处理的错误,zmq::error_t 知道如何让它发挥作用吗?
zmq::context_t *ctx = new zmq::context(100, 100);
void *raw_socket = new zmq::socket_t(*ctx, ZMQ_STREAM);
zmq::socket_t *socket = static_cast<zmq::socket_t*>(raw_socket);
socket->connect("tcp://127.0.0.1:5555");
char message[] = "HELLO, WORLD!"
socket->send(message, strlen(message), ZMQ_SNDMORE)
当你在 ZMQ_STREAM
类型的套接字上发送或接收任何东西时,第一个数据帧应该是一个标识符,指示后续帧应该去哪里或来自哪里。
当使用 ZMQ_STREAM
套接字作为服务器时(即您在套接字上调用 bind
),那么您可以使用 recv
提取此标识帧并在您响应时重新发送它.
当用作客户端时(即您在套接字上调用 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 上的文档更详细地介绍了如何通知您以及如何控制连接、断开连接等。