0

让我们假设以下代码:

class MQActor extends Actor {

    // Bind on port 0... Technically this should pick a free port
    val pubSocket = context.system.newSocket(SocketType.Pub, Bind("tcp://127.0.0.1:0"))

    def receive = {
        // ...
    }

}

我的问题是:

1) 指定端口 0 来请求任何可用端口上的套接字是否正确?

2)假设1)有效,我怎么知道套接字绑定到哪个端口?

3) 如果 1) 不起作用和/或 2) 不可能,我如何绑定到任何可用端口?

提前致谢!

比利

4

1 回答 1

0

据我所知,这对于 ZMQ 是不可能的。但是,您可以向参与者询问套接字选项。以下是选项:

https://github.com/akka/akka/blob/master/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala#L85

您可以自己确定未使用的端口。但是你的用例到底是什么?为什么需要将套接字绑定到随机端口?发布者如何知道他们应该使用哪个端口?

于 2012-05-01T19:35:02.270 回答