[zeromq-dev] automatically choosing a free TCP port

Martin Sustrik sustrik at 250bpm.com
Mon Mar 15 12:52:54 CET 2010

Hi David,

> I'm looking at using avahi (eg, zeroconf) with a zeromq based
> application. I'd like to be able to have zeromq bind to any free port
> so that I can announce the service via avahi, but afaict the string
> passed to zmq_bind must have a port number. Is there any way to avoid
> specifying a TCP port number and just have one automatically assigned?
> Apparently you can "just create the socket and call listen() on it.
> Then, the IP stack will automatically assign a free port number. Use
> getsockname() to query the port number that has been chosen and use
> that when registering the Avahi service."  I tried using an address
> string of "tcp://lo" without success (eg, zmq_bind (socket,
> "tcp://lo")).

No, the feature was deliberately omitted. The idea is that you can 
connect even to services that are not running (connecting side tries to 
reconnect automatically and queues the messages in the meantime). In 
that case there's no application that could ask kernel to assign a port 
number. For that reason we stick with fixed port numbers.

I am not familiar with avahi details. What's the use case and how would 
you except the whole thing to work?


More information about the zeromq-dev mailing list