【发布时间】:2012-12-15 03:55:57
【问题描述】:
我正在尝试利用 Node.js 中的 TCP 套接字与 Lua 程序进行通信。我试图解决两个问题。首先是缓冲区。
缓冲区 据我了解,当从套接字向您的代码提供数据时,它将是迄今为止收到的任何数据(流而不是数据包)。因此,当您读取接收到的数据时,它可能与发送的数据不同。
即收到的数据 {学校:[“长”
vs 发送的数据 { 学校 : [{"Longwood", "Hillbrow"}] }
解决此问题的方法是将您的数据放入“缓冲区”,并通过您使用的任何方法将其拆分以显示该信息的结尾。通常看起来是新行。
我的问题在这里:
- 您能否在缓冲区中有更多 2 个或更多完整的数据部分,您将如何处理? For 循环?
- 数据离开套接字时似乎存在同样的问题。然而,我注意到在其他代码示例中,人们在写入套接字之前使用 Node.js Buffer。为什么这不用于传入数据?
- 如果写入的数据多于无法处理的数据,Node 会为您处理这个问题,还是您需要想出一个方法。
最后我似乎误解了数据方面。发送和接收的所有数据是否都需要转换为二进制并返回?我希望只来回发送 JSON 数据。我想这就是我的困惑。例如:
var myQuestion = "Is this acceptable and will I encounter any issues?
socket.write(myQuestion);
非常感谢您的宝贵时间。
【问题讨论】:
-
PS:我想为这个冗长的问题道歉。在花了 2 天时间浏览各种论坛、群组和其他帖子但仍然没有理解之后,我想也许有人可以用我会得到的方式来解释它! :)
标签: node.js sockets tcp binary buffer