获取Actor正在侦听的端口

时间:2012-04-29 12:35:51

标签: scala actor

如何获取Actor正在侦听的端口?

我有以下代码

import scala.actors.Actor
import scala.actors.Actor._
import scala.actors.remote.RemoteActor._

object DispatchActor extends Actor 
{
  def act() 
  {
    alive(8888)
    register('myService, self)
    println("Listening on port " + howToGetPort)

 ..

  }
}

如何打印Actor正在侦听的端口?

第二个问题是关于调用alive()和register()方法。这些方法在RemoteActor对象中定义。如何在Actor对象上调用它们。

感谢。

1 个答案:

答案 0 :(得分:1)

我认为Actor API没有任何方法可以知道特定Actor正在侦听哪个端口(现在我想到它有点类似于Java RMI)所以这种情况下的标准方法是记住哪个端口您在致电alive时指定的。

就问题的第二部分而言,你没有在你的Actor对象上调用方法,你已经从对象定义顶部的RemoteActor导入了相关的定义 - 所以你可以编写你的代码像这样:

import scala.actors.Actor
import scala.actors.Actor._
import scala.actors.RemoteActor

class DispatchActor(port: Int) extends Actor 
{
  def act() 
  {
    RemoteActor.alive(port)
    RemoteActor.register('myService, self)
    println("Listening on port " + port)
  }
}

请注意,我已将对象定义更改为类定义,以允许对其进行参数化。