I think you are creating new socket at step 4, then "Router" will assign
new socket identites to incoming peers.
https://github.com/zeromq/libzmq/blob/9c6aa1e9e00ab11a1c716e1fd2f1c56030972e30/src/router.cpp#L437
That's why you cannot send replies to a client with same identity.



On Fri, Feb 7, 2014 at 10:51 PM, Justin Karneges <jus...@affinix.com> wrote:

> Hi,
>
> 1) ROUTER in program A is set to connect to a bind socket in program B.
> 2) Both programs are started, and the connection is established.
> 3) A determines B's socket identity out-of-band, and is able to send
> messages to B.
> 3) B is terminated and the connection is lost.
> 4) B is started again, and the connection is re-established.
> 5) A determines B's socket identity out-of-band, and is no longer able
> to send messages to B.
>
> It seems this problem does not happen if B retains the same socket
> identity across reconnects. However, if it uses a random identity (to be
> discovered out-of-band by A), then routing will never work again after
> the first restart of B. The A program must be restarted in order to make
> things right again.
>
> My guess is that each connect queue on a ROUTER socket is somehow bound
> for life against the first identity it sees. Is this intentional behavior?
>
> Thanks,
> Justin
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev@lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to