我以请求 - 回复模式回复了ZSocket。
稍后在此过程中,我想切换绑定,因此回复套接字现在响应不同端口上的请求。用户输入他们想要收听的端口,如果他们不想在默认端口5555上收听。
我可以通过再次调用ZSocket.Bind()来实现这一点,或者我是否必须首先销毁套接字对象。
如果我必须首先销毁它,那么我怎么能确定ZSocket现在已准备好反弹到别的东西?我知道在C中关闭套接字的处理方式不同,因为它没有垃圾收集。由于ZeroMQ的C#语言绑定可以使用垃圾收集,它是否就像关闭套接字并在另一个端口上创建一个新套接字一样简单?我是否需要设置低灵儿值或类似的东西呢?
我在文档中找不到任何相关内容。 以下是相关问题ZeroMQ: Address in use error when re-binding socket
这是我的代码
private ZContext context = new ZContext();
private ZSocket replier = new ZSocket(context, ZSocketType.REP);
replier.Bind("tcp://*:5555); //bind to default port
//yada yada...
//user enters new port to listen on 5556
replier.Bind("tcp://*:5556);
这样做的正确方法是什么?请解释答案背后的逻辑。
答案 0 :(得分:0)
我不确定C#绑定,但您可以使用普通的C api重新绑定zmq套接字并立即开始在新端口上接收消息。灵儿期与您的情况无关。