[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?
Thanks.
Martin
More information about the zeromq-dev
mailing list