Я использую zmq (3.2) и использую составные сообщения. Я обрабатываю некоторые случаи ошибок, когда первая часть сообщения недействительна, и я хочу отбросить оставшиеся части. То, о чем я думал, было чем-то вроде.
void zmq_drain_multipart(void *sock)
{
int more;
size_t size = sizeof(int);
zmq_getsockopt(sock, ZMQ_RCVMORE, &more, &size);
while (more)
{
zmq_recv(sock, NULL, 0, 0);
zmq_getsockopt(sock, ZMQ_RCVMORE, &more, &size);
}
}
Что-то вроде этого должно работать.