我通过akka Source和Tcp将字节作为字节串数组发送,完整数组的长度包括:begin ++ len ++ gzip ++ sign ++ term
是997,但只有710字节到达服务器。代码在这里:
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.{Source, Tcp}
import akka.util.ByteString
import scala.concurrent.duration._
import scala.concurrent.{Await, Future}
class UpperServiceClient(ip: String, port: Int){
def run = {
implicit val system = ActorSystem("ClientSys")
implicit val materializer = ActorMaterializer()
...
// Initializing of (begin, len, gzip, sign, term) arrays
...
val conn = Tcp().outgoingConnection(ip, port)
val res: Future[ByteString] = Source(begin ++ len ++ gzip ++ sign ++ term).via(conn).
runFold(ByteString.empty) { (acc, in) => acc ++ in }
val resp = Await.result(res, 3.seconds)
}
}
服务器接受并成功处理前 710 个字节。服务器上没有问题,因为当我尝试从另一个客户端发送这些字节时,消息完成了。有什么想法可以与问题联系起来吗?或者可能有人可以建议如何将消息分成两部分并通过一个连接发送?