gpt4 book ai didi

scala - 如何将 Akka ByteString 转换为 String?

转载 作者:行者123 更新时间:2023-12-02 08:46:09 25 4
gpt4 key购买 nike

如果这是一个愚蠢的问题,我很抱歉,但老实说,如果我自己不设置某种 ASCII 代码 -> 字符映射器,我就无法弄清楚它,我认为这不是正确的方法。

目前我正在使用 Scala 和 Akka 制作一个“聊天应用程序”,其中使用单独的客户端和服务器实体。客户端连接到服务器,发送一条消息,服务器用它做一些事情。

我可以发送消息,但现在我只能在服务器端读取消息。每当我收到一条消息时,我都会收到一个包含消息中字符的 ASCII 值的 ByteString。如何将此 ByteString 转换为实际的 String?

相关代码(服务器端):

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

最佳答案

使用

scala> val data = ByteString("xyz")
data: akka.util.ByteString = ByteString(120, 121, 122)

scala> data.utf8String
res3: String = xyz

参见ByteString API ,

或者在 github 上:

final def utf8String: String = decodeString(StandardCharsets.UTF_8)

关于scala - 如何将 Akka ByteString 转换为 String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36315667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com