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

scala – 如何将Akka ByteString转换成String?

发布时间:2020-12-16 09:15:50 所属栏目:安全 来源:网络整理
导读:我很抱歉,如果这是一个愚蠢的问题,但我可以坦白地说,没有设计出某种ASCII代码 – 我自己的角色mapper,我不认为是正确的方法. 所以目前我正在与Scala和Akka进行“聊天应用程序”,在这里我使用一个单独的客户端和服务器实体.客户端连接到服务器,发送消息,服务
我很抱歉,如果这是一个愚蠢的问题,但我可以坦白地说,没有设计出某种ASCII代码 – >我自己的角色mapper,我不认为是正确的方法.

所以目前我正在与Scala和Akka进行“聊天应用程序”,在这里我使用一个单独的客户端和服务器实体.客户端连接到服务器,发送消息,服务器与它进行交互.

我发送的消息正在工作,但现在我被困在阅读消息服务器端.每当我收到一条消息,我得到一个ByteString,其中包含消息中字符的ASCII值.如何将此ByteString转换成实际的字符串?

相关代码(服务器端):

package chatapp.server

import java.net.InetSocketAddress

import akka.actor.{Actor,ActorSystem}
import akka.io.Tcp._
import akka.io.{IO,Tcp}

/**
  * Created by Niels Bokmans on 30-3-2016.
  */
class ServerActor(actorSystem: ActorSystem) extends Actor {
  val Port = 18573
  val Server = "localhost"

  IO(Tcp)(actorSystem) ! Bind(self,new InetSocketAddress("localhost",Port))

  def receive: Receive = {

    case CommandFailed(_: Bind) =>
      println("Failed to start listening on " + Server + ":" + Port)
      context stop self
      actorSystem.terminate()

    case Bound(localAddress: InetSocketAddress) =>
      println("Started listening on " + localAddress)

    case Connected(remote,local) =>
      println("New connection!")
      sender ! Register(self)
    case Received(data) =>
      println(data)
  }
}

服务器的图片(您可以看到它接受连接 – >接收新的连接 – >从连接接收消息):

Server side

客户端的图片(连接到服务器,然后发送消息“testmessage”)

Client side

解决方法

你可以像这样使用decodeString方法:

scala> val x = ByteString("abcd")
x: akka.util.ByteString = ByteString(97,98,99,100)

scala> x.decodeString("US-ASCII")
res0: String = abcd

(编辑:李大同)

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

    推荐文章
      热点阅读