求大神帮忙解决一个问题NET模块的问题,我向客户端发送一个挺长的字符串,结果被分割成好几段,请教如何拼接起来?新手一个求大神指导,客户端是JS写的
发布于 10 年前 作者 438041502 3319 次浏览 最后一次编辑是 8 年前 来自 问答
5 回复

前面不是有人回答过吗:

如果没有调用socket.setEncoding();,回调中拿到的data就是一个Buffer对象,Buffer直接toString()的话,默认编码是utf-8,所以乱码的话可能是客户端传输的编码不是utf-8?

另外一个问题是,你从socket读数据的方式不对,TCP是面向字节流的,data事件触发的时候,你未必就能一次拿到全部json数据(它可能被切成一段一段的发过来,尤其是网络不好的情况下),一般的处理方式有两种:对端先发送数据长度,然后这别先读到长度,这样把后面的数据都buffer起来,直到读够了指定长度的数据,这时你才能确定这段数据传完了。另一种方式是:采用特定的分隔符号,比如用\r\n分隔每段json数据,这样也是先buffer,然后每读到一个\r\n就知道一段完整的json收到了。

再有一个问题是,node.jsv0.10中stream有一些变化,如果你在用新版本的话,建议使用新的API:

socket.on(‘readable’, function () { var data = socket.read(); });

以前不是这么弄的,这个怎么处理?

这个buffer客户端怎么处理?我是通过flash跟nodejs交互的

就是不知道怎么处理

最简单的做法,就是自己先分割字符串再发送。

回到顶部