[zeromq-dev] ZMQ occupies random TCP ports on Windows

Michał Sznajder michalsznajder at gmail.com
Tue Sep 27 18:20:01 CEST 2011


On Tue, Sep 27, 2011 at 6:01 PM, Chuck Remes <cremes.devlist at mac.com> wrote:
>
> On Sep 27, 2011, at 10:51 AM, Michał Sznajder wrote:
>
>> I have an application on Windows that is run in multiple instances on
>> many boxes. Instances may come an go in random order. Instances use
>> predefined "connection strings" to zmq_bind(). Both tcp:// and
>> inproc:// are in use.
>>
>> Unfortunately ZMQ opens arbitrary TCP ports on Windows in order to
>> simulate socketpair(3) functionality [1] that is used by some kind of
>> signalling mechanism(?). As a result sometimes application port gets
>> occupied by another instance and my application fails to start.
>>
>> Any idea how to workaround it? There was once discussion about this in
>> another context [2] but finished without any code changes...
>
> The only workaround is to change your transport from ipc to tcp and pick some specific ports to use. A permanent fix is awaiting "real" ipc support on Windows. There are a few people poking at this but there haven't been any code drops from them in months that address this issue.
>

I was thinking of this, eg. convert all my inproc into tcp. But even
something as simple as

    ZMQ.Context ctx = new ZMQ.Context(1);

creates 4 TCP connections... Without even getting any socket or bind...

 I checked clrzmq2 C# bindings and they do not spawn those connections.

Michal


More information about the zeromq-dev mailing list