Chr*_*ans 3 sockets binary buffer tcp node.js
我正在尝试利用Node.js中的TCP套接字与Lua程序进行通信.我正试图解决两个问题.首先缓冲.
缓冲区据我所知,当从套接字向您的代码提供数据时,它将是迄今为止收到的任何数据(流而不是数据包).因此,当您阅读收到的数据时,可能会从发送的数据中删除.
即收到的数据{学校:["Long
vs发送的数据{学校:[{"Longwood","Hillbrow"}]}
解决这个问题的方法是将您的数据放入"缓冲区"并通过您用来显示该信息结尾的任何方法将其拆分.通常看来是新线.
我的问题在这里:
最后我似乎误解了数据方面.是否需要将发送和接收的所有数据转换为二进制数据并返回?我希望只来回发送JSON数据.我觉得我的困惑在于谎言.例如:
var myQuestion = "Is this acceptable and will I encounter any issues?
socket.write(myQuestion);
Run Code Online (Sandbox Code Playgroud)
非常感谢你的时间.
setEncoding.首先,Buffer是二进制.缓冲区只是一个字节数组,仅此而已.可以从字符串创建缓冲区,在某些情况下,节点会自动执行此操作.在你的情况下,我建议你打电话socket.setEncoding('utf8').这将自动将传入的数据转换为字符串,以简化您的解析.
就处理和拆分数据而言,由您决定.TCP仅提供以与发送顺序相同的顺序到达的字节流.正如你所说,你可以收集字节,当收到换行符时,你先取出所有内容并将其解析为JSON.这应该工作正常.您可以使用任何不会在JSON中弹出的字符.只要执行JSON序列化的程序不添加换行符,就可以设置.当发出"数据"时,您可以检查换行符的字符串,如果没有,则将其添加到以前接收的任何数据中,如果找到,则将其拆分,添加现有数据.
| 归档时间: |
|
| 查看次数: |
4301 次 |
| 最近记录: |