【发布时间】:2019-06-29 01:26:40
【问题描述】:
我正在尝试使用 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)
【问题讨论】:
-
raw_socket需要什么? -
我连接的TCP服务器是使用python构建的TCP服务器,所以无法使用ZMTP协议连接。
-
但在示例中它完全没用
-
你是什么意思?
-
您将指向
zmq::socket_t的指针分配给void*。然后,您唯一要做的就是将其转换回zmq::socket_t*。那是完全没用的。只需执行zmq::socket_t *socket = new zmq::socket_t(*ctx, ZMQ_STREAM);,您就可以达到相同的效果(加上节省一些内存)。我认为拥有raw_socket毫无意义。
标签: c++ visual-studio-2013 tcp zeromq