我正在尝试在Node.js中利用TCP套接字与Lua程序进行通信。我遇到了两个问题,首先是缓冲区。
缓冲区 据我所知,当从套接字向您的代码提供数据时,它将是迄今为止接收到的所有数据(流而不是数据包)。因此,当您读取接收到的数据时,它可能会与发送的数据不一致。
例如,接收到的数据 { schools : ["Long
与发送的数据 { schools : [{"Longwood", "Hillbrow"}] }
解决这个问题的方法是将数据放入“缓冲区”并通过您用于显示该信息结束的任何方法对其进行拆分。通常出现的是换行符。
我的问题如下:
- 如果缓冲区中有两个或更多完整的数据段,您该如何处理?使用for循环吗?
- 相同的问题似乎存在于数据离开套接字时。但是我注意到在其他代码示例中,人们在写入套接字之前使用Node.js Buffer。为什么不用于传入的数据?
- 如果写入的数据超过了可以处理的范围,Node会为您处理吗,还是需要自己想出一种方法。
最后,我似乎误解了数据方面的内容。是否所有发送和接收的数据都需要转换为二进制并返回?我希望只来回发送JSON数据。我认为我的困惑就在这里。例如:
var myQuestion = "Is this acceptable and will I encounter any issues?
socket.write(myQuestion);
非常感谢您的时间。