2016-03-30 4 views
19

मुझे खेद है कि यह एक बेवकूफ सवाल है, लेकिन मैं ईमानदारी से कुछ प्रकार के एएससीआईआई कोड -> चरित्र मैपर खुद को स्थापित किए बिना इसे समझ नहीं सकता, जो मुझे नहीं लगता कि ऐसा करने का सही तरीका है।अक्का बाइटस्ट्रिंग को स्ट्रिंग में कैसे परिवर्तित करें?

तो वर्तमान में मैं एक "चैट आवेदन" स्काला और अक्का के साथ जहां मैं एक अलग क्लाइंट और सर्वर इकाई का उपयोग बना रहा हूं। क्लाइंट सर्वर से जुड़ता है, एक संदेश भेजता है, और सर्वर इसके साथ कुछ करता है।

मैं एक संदेश भेजने के काम कर मिल गया लेकिन अब मैं संदेश सर्वर साइड पढ़ने पर अटक कर रहा हूँ। जब भी मुझे एक संदेश प्राप्त होता है तो मुझे एक बाइटस्ट्रिंग मिलता है जिसमें संदेश से वर्णों के ASCII मान होते हैं। मैं इस बाइटस्ट्रिंग को एक वास्तविक स्ट्रिंग में कैसे परिवर्तित करूं?

प्रासंगिक कोड (सर्वर साइड):

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

उत्तर

20

आप इस तरह decodeString विधि का उपयोग कर सकते हैं:

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

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

ध्यान दें कि यह निर्दिष्ट एन्कोडिंग के लिए अमान्य बाइट दृश्यों पर फेंक नहीं है। उदाहरण के लिए, 'बाइटस्ट्रिंग (1 9 2) .decodeString (ByteString.UTF_8) ' –

संबंधित मुद्दे