Es tut mir leid, wenn dies eine dumme Frage ist, aber ich kann es ehrlich gesagt nicht herausfinden, ohne irgendeine Art von ASCII-Code -> Character Mapper einzurichten, was ich nicht für den richtigen Weg halte.Wie konvertiert man Akka ByteString in String?
Also mache ich gerade eine "Chat-Anwendung" mit Scala und Akka, wo ich eine separate Client- und Server-Einheit verwende. Der Client verbindet sich mit dem Server, sendet eine Nachricht und der Server macht etwas damit.
Ich habe das Senden einer Nachricht funktioniert, aber jetzt bin ich auf dem Lesen der Nachricht Server-Seite fest. Immer wenn ich eine Nachricht erhalte, erhalte ich einen ByteString, der die ASCII-Werte der Zeichen aus der Nachricht enthält. Wie konvertiere ich diesen ByteString in einen tatsächlichen String?
Relevante Code (serverseitig):
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)
}
}
Bild von Server (wie Sie sehen können es akzeptiert Verbindungen -> eine neue Verbindung empfängt -> erhält eine Nachricht von der Verbindung):
Bild von Client (eine Verbindung zum Server und sendet dann Meldung „Testmessage“)
Beachten Sie, dass dies nicht für die angegebene Codierung auf ungültige Byte-Sequenzen nicht werfen. Zum Beispiel, ByteString (192) .decodeString (ByteString.UTF_8) ' –