Kev*_*man 5 sockets scala protocol-buffers akka
我看到了这篇博文,我发现它很棒,很有启发性,展示了如何对发送到Akka IO套接字服务器的字符串消息进行固定长度的构建.我一直在使用我在这里找到的一个名为ScalaBuff的开源库,它在协议缓冲区对象之上创建了一个很好的薄层.
我遇到的麻烦是调整博客作者(找不到直接联系他的链接)代码来获取长度(4字节序列)然后是protobuf字节数组.我可以担心以后找出哪条消息在线上,现在我只想让代码使用一条示例消息.
我的问题是我无法将Akka IO代码从akka ByteStrings转换为能够从protobuf消息发送和拉取原始字节.这是我对使用Akka IO的套接字服务器不熟悉的一种表现.我可以从我的protobuf对象(Zombie Sighting)的字节表示中获取,但是我无法从博客中获取样本来处理字节数组而不是字符串.
如果有人有一些建议,一些示例代码,或者如何从A点(上面提到的博客文章)到B点(一个Akka IO套接字客户端,将一个protobuf消息发送到Akka IO套接字服务器)的一些输入...我我认为我有客户工作..也许),这将是非常棒的.
尝试这个:
val myByteArray = myByteString.toArray // converts to an Array[Byte]
val myMessage = MyMessage.defaultInstance.mergeFrom(myByteArray)
Run Code Online (Sandbox Code Playgroud)
MyMessage 是 ScalaBuff 编译器使用 MyMessage.proto 模板生成的类。请注意,Google protobuf 库有一个单独的 ByteString 类,请确保不要将两者混合。
更新:Kevin 的问题已经解决,基本上问题是他使用 Array[Byte] 的 toString 方法,而不是将字节数组包装在 new String() 中,新 String() 正确地将字节数组转换为字符串,用于“%s”.format 调用。
| 归档时间: |
|
| 查看次数: |
1949 次 |
| 最近记录: |