【发布时间】:2011-11-23 18:49:24
【问题描述】:
我有一个节点,它可能正在运行服务器的多个实例(Akka 远程参与者)。我希望客户端能够扫描给定节点上的一系列端口以查找实时服务器。
我在我的客户端actor中写了这个方法:
private def scanHost(serverHost: String) = {
val initialPort = 36627
val portsToScan = (initialPort until initialPort + 32).toList
val tries = portsToScan map {
port ⇒ remote.actorFor("EnMAS-service", serverHost, port) ? Discovery
}
val replies = tries filter { future ⇒ {
try {
future.get match {
case reply: DiscoveryReply ⇒ true
case _ ⇒ false
}
}
catch { case _ ⇒ false }
}}
ClientManager.ScanResult(replies map {_.get.asInstanceOf[DiscoveryReply]})
}
我想知道,有没有更惯用的方法来完成这项工作?虽然我认为这个用例相当普遍,但我找不到太多关于此的内容。
【问题讨论】:
标签: scala network-programming actor akka