IT干货网

scala之带有 Scala Actor 的客户端-服务器示例

third_qq_acbf90bbd2dede1d 2024年11月01日 编程设计 14 0

实现以下示例的最佳方法是什么?

  • Actor server接收 Requests ,
    处理它们,创建一个新的 Response每个Request并发送 Response背部
    Request发件人。
  • Actor 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 
    

    关于:

    All this communication is asynchronous and hence it uses react.



    使用 receive 的 Actor 也是异步的。他们只是阻塞线程,等待新消息。


    评论关闭
    IT干货网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!