Je joue avec des acteurs à distance, mais je suis confronté à des difficultés.Comment mettre fin au client Scala Remote Actor?
Tenir compte de ce serveur:
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) }
}
}
}
J'ai écrit un client simple:
object Client {
def main(args: Array[String]) {
val server = RemoteActor.select(Node("localhost", 12345), 'server)
server ! "Hey!"
}
}
Comme prévu, les impressions du serveur "Hey".
Cependant, de manière inattendue, l'application cliente ne se termine jamais!
Il semble que de nombreux threads ont été démarrés sur l'application client, mais ils continuent à fonctionner après la fin de ma fonction principale! Que puis-je faire pour terminer l'application client?
Et plus encore: que se passe-t-il si je veux que mon client puisse démarrer et arrêter les connexions? Comment puis-je atteindre cet objectif?
Quelques informations supplémentaires (basées sur les réponses): J'utilise scala 2.8.0.final, et ce dont je parle ici est un serveur autonome et un client autonome. Ils devraient être lancés comme $ scala Server
et $ scala Client
. Ce que je veux arriver, c'est que l'application "Client" devrait finir, mais cela n'arrive jamais.
Merci!
Voir aussi http://stackoverflow.com/questions/1058408/is-it-bad-practice-to-send -un-acteur-un-message-de-quelque-chose-qui-n'est-pas-un-acte. –