У меня две машины в одной сети:
Первая машина привязывается к сокету по собственному IP-адресу (120.0.0.1
) и получает любые данные, поступающие в сокет .bind()
-ed на порт 5555
:
zmq::context_t context{1};
zmq::socket_t socket{context, ZMQ_SUB};
socket.setsockopt(ZMQ_SUBSCRIBE, "lidar");
socket.bind("tcp://120.0.0.1:5555");
while(true)
{
zmq::message_t message;
auto recv = socket.recv(message);
ROS_INFO("Value: %d", recv.value());
}
Вторая машина, имеющая IP-адрес 120.0.0.248
, подключается к первой машине и отправляет ей сообщения:
sock.connect("tcp://120.0.0.1:5555");
while (1) {
double nodes[8192];
sock.send(zmq::buffer("lidar") , zmq::send_flags::sndmore);
sock.send(zmq::buffer(nodes, (((int)(count)) * 8)));
}
Но по какой-то причине я не могу получать сообщения на первом компьютере, и он застревает на auto recv = socket.recv(message);
.
Каков правильный способ для такого связь?