2012-04-29 3 views
0

액터가 수신 대기중인 포트를 얻으려면 어떻게해야합니까?포트 가져 오기 액터가 수신 대기 중

나는

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) 

.. 

    } 
} 

은 어떻게 배우가 수신 대기 포트를 다음 코드를 인쇄 할 수있다?

두 번째 질문은 alive() 및 register() 메서드를 호출하는 방법입니다. 이러한 메서드는 RemoteActor 개체에 정의되어 있습니다. Actor 객체에서 어떻게 호출 할 수 있습니까?

감사합니다.

답변

1

액터 API가 특정 액터가 듣고있는 포트를 알 수있는 방법이 없다고 생각합니다. (자바 RMI와 조금 비슷합니다.) 그래서이 경우의 표준 접근 방식은 포트 번호는 alive입니다.

질문의 두 번째 부분은 Actor 객체의 'on'메서드를 호출하지 않는 한 이미 객체 정의의 맨 위에있는 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) 
    } 
} 

개체 정의를 매개 변수화 할 수 있도록 클래스 정의로 변경했습니다.

+0

흥미 롭습니다. 그래서 우리는 alive()와 register()를 RemoteActor의 정적 메소드로 생각할 수 있습니까? – Nabegh

+0

자바 토지에서 온다면, 그렇습니다. 스칼라의 메서드는 항상 개체에 연결되며, 이들은 실제로 Singleton 개체 인 RemoteActor의 메서드입니다. – rxg