首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每个执行元的Akka套接字

每个执行元的Akka套接字
EN

Stack Overflow用户
提问于 2013-01-19 05:54:40
回答 1查看 2.5K关注 0票数 16

在使用Scala和Akka IO时,有没有一种方法可以让Actor严格用于侦听,然后在建立连接时创建一个新的actor,然后负责该套接字(读取、写入等)?

到目前为止,我已经有了这个。问题是服务器执行元正在接收数据。我希望将套接字的所有权转移给新创建的客户端参与者,以便它接收与套接字相关的任何消息。有人知道怎么做吗?

编辑:添加解决方案。我只需要将ActorRef传递到accept的curried参数中

代码语言:javascript
运行
复制
import akka.actor._
import akka.actor.IO.SocketHandle
import java.net.InetSocketAddress


/**
 * Purpose:
 * User: chuck
 * Date: 17/01/13
 * Time: 5:37 PM
 */
object Main {

  class Server extends Actor {

    override def preStart() {
      IOManager(context.system) listen new InetSocketAddress(3333)
    }

    def receive = {

      case IO.NewClient(server) =>

        val client = context.actorOf(Props(new Client()))
        server.accept()(client)
        println("Client accepted")

      case IO.Read(socket, bytes) =>
        println("Server " + bytes)


    }
  }

  class Client() extends Actor {

    def receive = {

      case IO.Read(socket, bytes) =>
        println("Client " + bytes)

      case IO.Closed(socket, reason) =>
        println("Socket closed " + reason)

    }

  }

  def main(args: Array[String]) {
    val system = ActorSystem()
    system.actorOf(Props(new Server))
  }

}

谢谢!

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14408273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档