CZMQ Manual - CZMQ/3.0.1


czmq - high-level C binding for ZeroMQ


#include <czmq.h>

cc ['flags'] 'files' -lzmq -lczmq ['libraries']



These classes provide the main socket and message API:

  • zsock(3) - working with ZeroMQ sockets (high-level)
  • zstr(3) - sending and receiving strings
  • zmsg(3) - working with multipart messages
  • zframe(3) - working with single message frames
  • zactor(3) - Actor class (socket + thread)
  • zloop(3) - event-driven reactor
  • zpoller(3) - trivial socket poller class
  • zproxy(3) - proxy actor (like zmq_proxy_steerable)
  • zmonitor(3) - monitor events on ZeroMQ sockets

These classes support authentication and encryption:

  • zauth(3) - authentication actor for ZeroMQ servers
  • zcert(3) - work with CURVE security certificates
  • zcertstore(3) - work with CURVE security certificate stores

These classes provide generic containers:

  • zhash(3) - simple generic hash container
  • zhashx(3) - extended generic hash container
  • zlist(3) - simple generic list container
  • zlistx(3) - extended generic list container

These classes wrap-up non-portable functionality:

And these utility classes add value:

These classes are deprecated:

Scope and goals

CZMQ has these goals:

  • To wrap the ØMQ core API in semantics that are natural and lead to shorter, more readable applications.
  • To hide the differences between versions of ØMQ.
  • To provide a space for development of more sophisticated API semantics.

Ownership and license

CZMQ is maintained by the ZeroMQ community at Its other authors and contributors are listed in the AUTHORS file.

The contributors are listed in AUTHORS. This project uses the MPL v2 license, see LICENSE.


To submit an issue use the issue tracker at All discussion happens on the zeromq-dev list or #zeromq IRC channel at

The proper way to submit patches is to clone this repository, make your changes, and use git to create a patch or a pull request. See All contributors are listed in AUTHORS.

All classes are maintained by a single person, who is the responsible editor for that class and who is named in the header as such. This is usually the originator of the class. When several people collaborate on a class, one single person is always the lead maintainer and the one to blame when it breaks.

The general rule is, if you contribute code to CZMQ you must be willing to maintain it as long as there are users of it. Code with no active maintainer will in general be deprecated and/or removed.

Using czmq

Building and installing

CZMQ uses autotools for packaging. To build from git (all example commands are for Linux):

    git clone git://
    cd czmq
    make all
    sudo make install
    sudo ldconfig

You will need the pkg-config, libtool, and autoreconf packages. Set the LD_LIBRARY_PATH to /usr/local/libs unless you install elsewhere.

After building, you can run the CZMQ selftests:

    cd src

Linking with an application

Include czmq.h in your application and link with CZMQ. Here is a typical gcc link command:
E: unhandled condition