Я использовал zeromq в течение некоторого времени и широко использую составные сообщения. В C ++ я использую zmq_sendiov / zmq_recviov для отправки / recv составного сообщения. Преимущество заключается в том, что я могу поместить каждое сообщение ‘frame’ в один iovec и использовать вызов для отправки / recv за один раз.
Недавно я решил попробовать nanomsg и понял, что у nanomsg есть nn_sendmsg / nn_sendmsg, которые также используют iovec. Вопрос в следующем: гарантирует ли nanomsg, что полученная структура iovec совпадает с отправляемой? например, я полагаю
msg[0].iov_base = "Hello";
msg[0].iov_len = 5;
msg[1].iov_base = "World";
msg[1].iov_len = 5;
и отправить, получит ли принимающая сторона один и тот же массив iovec, с «Hello» и «World» в каждом элементе, или nanomsg может свободно собрать буфер?
Спасибо
Ральф
Nanomsg-1.0.0 уже поддерживает Iov
nn_sendmsg
В настоящее время в документации об этом ничего не сказано, но я уверен, что nanomsg позаботится о том, чтобы структура iovec
то, что получено, совпадает с полученным, потому что существует один модульный тест (см. https://github.com/nanomsg/nanomsg/blob/fb5670c952c53834c5c7c989eace7c6bd54bd4c5/tests/iovec.c), что подтверждает мои предположения.