加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Akka TCP客户端:如何使用akka actor通过TCP发送消息

发布时间:2020-12-16 09:58:28 所属栏目:安全 来源:网络整理
导读:我想通过TCP发送文本消息.满容易.我想用akka这样做.我读了这篇关于akka IO的文章: http://doc.akka.io/docs/akka/snapshot/scala/io-tcp.html 本文介绍了TCP客户端的简单实现,但我不清楚如何使用此客户端. 构造函数采用InetSocketAddress和ActorRef. InetSo
我想通过TCP发送文本消息.满容易.我想用akka这样做.我读了这篇关于akka IO的文章:
http://doc.akka.io/docs/akka/snapshot/scala/io-tcp.html

本文介绍了TCP客户端的简单实现,但我不清楚如何使用此客户端.

>构造函数采用InetSocketAddress和ActorRef. InetSocketAddress是有道理的(我假设这是目的地),但是ActorRef是什么?这是我第一次使用akka,但据我所知,ActorRef是另一个actor的引用.由于我的TCP客户端是一个actor,我希望这个TCP actor与TCP服务器通信,而不是与另一个actor通信,为什么我会给它一个actor ref?
>伴侣对象中的道具功能是什么?
>一旦实例化,我将如何使用此actor发送TCP消息?我应该以ByteString的形式向我发送一条包含我要发送的数据的消息吗?

4.
什么是它们之间的联系/区别

case Received(data) => 
    listener ! data

case data: ByteString =>
    connection ! Write(data)

解决方法

回答你的问题:

>构造函数类Client(remote:InetSocketAddress,listener:ActorRef)extends Actor采用一个侦听器,该侦听器是对使用此Client与远程服务器通信的actor的引用.监听器将通过此客户端发送和接收消息.由于客户是演员,您将仅通过发送消息与其进行通信.客户端在与连接/远程通信时也是如此 – 它将代表您发送和接收消息并将其转发给您提供的监听器.
> actor类的伴随对象中的props函数通常用作构造actor的辅助函数.如果你的actor接受构造函数参数而你必须注意不要关闭可变状态,那么它是必需的.记住你不能使用new运算符来创建actor,你必须调用Props.
>您的客户端actor将接收ByteString类型的消息,如案例数据:ByteString =>一旦连接到遥控器.它会将该数据写入TCP连接 – 有效地发送消息.每当它从Received类型的远程接收响应时,如接收(数据)=>它会将它转发给你的听众演员.
>请参阅3.客户端actor从您的侦听器和连接接收消息并相应地转发它们.它不会检查它们来自何处.因此,无论何时收到ByteString,它都会将其发送到连接/远程,并且每当收到Received时,它都会向侦听器发送字节.如果您想进行双向通信,则需要确保您的侦听器可以接收这些消息.

这里总结一下双向通信的样子.

将ByteString发送到远程:

MyActor – > ByteString – >客户 – >写(ByteString) – >连接/远程

从远程接收ByteString(服务器与客户端对话):

连接/远程 – >收到(ByteString) – >客户 – > ByteString – > MyActor

‘ – >’是一个消息发送.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读