我正在玩远程演员,但我遇到了一些困难。
考虑这个服务器:
object Server {
def main(args: Array[String]) {
val server = new Server
server.start
}
}
class Server extends Actor {
RemoteActor.alive(12345)
RemoteActor.register('server, this)
def act() {
while(true) {
receive { case x => println(x) }
}
}
}
我写了一个简单的客户端:
object Client {
def main(args: Array[String]) {
val server = RemoteActor.select(Node("localhost", 12345), 'server)
server ! "Hey!"
}
}
正如预期的那样,服务器打印“嘿!”。
然而,出乎意料的是,客户端应用程序永远不会终止!
看起来客户端应用程序上已经启动了许多线程,但是在我的主函数完成后它们继续运行!
我可以做些什么来终止客户端应用程序?还有更多:如果我希望我的客户端能够启动和停止连接怎么办?我怎样才能做到这一点?
一些附加信息(基于回复):我使用的是 scala 2.8.0.final,我在这里谈论的是独立服务器和独立客户端。它们应该像$ scala Server
和一样启动$ scala Client
。我想要发生的是应用程序“客户端”应该完成,但它永远不会发生。
谢谢!