实现以下示例的最佳方法是什么?
演员server
收到Requests
,
处理它们,创建一个新的Response
对于每个Request
并将Response
发送回
发送给Request
发件人。
演员client
发送Requests
和
收到Responses
。
所有这些通信都是异步的,因此使用react
。
这只是一个示例,因此它不应处理所有类似server
关闭,client
被卡住等情况。它应该简洁明了。
最佳答案
import scala.actors._
import Actor._
case class SendRequest(rid: String)
case class Request(rid: String)
case class Response(rid: String)
val server = actor {
eventloop {
case Request(rid) =>
println("Server got request [%s] from client" format(rid))
sender ! Response(rid)
}
}
}
val client = actor {
eventloop {
case SendRequest(rid) => server ! Request(rid)
case Response(rid) =>
println("Client got response [%s] from server" format(rid))
}
}
}
用法:
scala> client ! SendRequest("Hello!")
Server got request [Hello!] from client
Client got response [Hello!] from server
关于:
所有这些通信都是异步的
因此它使用反应。
使用
receive
的角色也是异步的。他们只是阻塞线程,等待新消息。关于scala - 具有Scala actor的客户端-服务器示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6317142/