tcp - Akka IO TCP 接收数据

标签 tcp io akka

我正在阅读有关 Using TCP 的文档并尝试理解 TCP 从服务器接收数据是多么简单。让服务器向每个连接的客户端发送数据流。

    case Received(data) => // do some with data, where data: ByteString

那么什么是数据。以字节为单位的数据大小是多少?我的意思是客户不断收到一些数据。每个这样的 data 包含多少字节?在哪里配置?

最佳答案

它是任意的,没有在任何地方配置。你得到了你还没有得到的任何东西,当它决定给你一些数据时,实现恰好必须给你。

处理此类通知的典型方式如下:

  1. 如果我们从上次通知中保存了任何数据,请将新数据附加到已保存数据的末尾。

  2. 如果根据我们正在实现的协议(protocol),我们没有完整的消息,请保存所有剩余数据以用于下一个通知、重新准备通知并停止。

  3. 处理消息。

  4. 如果我们没有剩余数据(也就是说,我们只有一个应用程序消息,一个字节也没有),请注意缓冲区为空,重新准备通知,然后停止。

    <
  5. 使用剩余数据转到第 2 步。

关于tcp - Akka IO TCP 接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42936905/

相关文章:

ruby - 如何从 ruby​​ 中的 IO 对象获取文件名

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java - 为什么我在增强 ebean scala 实体时收到 java.lang.VerifyError

java - 如何将Akka的监督策略与更具体的不可恢复错误处理结合起来?

java - 在java中获取用于tcp连接的开放套接字

c - 以编程方式更改 "Advanced TCP/IP Settings"- 正在检查 "Use Default Gate Way on Remote Network"

optimization - 增加tcp级吞吐量的建议

python - 查看文件是否存在并打印

scala - 为什么我的 Akka FSM 事件超时?

c - 如何创建一个 TCP 服务器-客户端程序,将 200 个 tcp 流从源发送到目的地?