的NodeJS'从C接收的缓冲区分为两部分

时间:2016-06-21 10:02:55

标签: c node.js tcp

我正在使用tcp传输数据。服务器代码由C编写,客户端代码由nodejs编写。 当我发送一个缓冲区时,有时客户端将收到此缓冲区的两个部分,console.log函数将触发两次,但有时它运行良好。 以下是nodejs代码和C代码。 nodejs代码:

var client = new net.Socket();
client.on('data', function(data) {
  console.log('data:', data)
});

C代码:

send(socket_file, buffer, strlen(buffer),0)

1 个答案:

答案 0 :(得分:2)

这是TCP的典型特征,它毕竟是面向流的(而不是面向数据包的)协议。

无法保证对网络的一次写入等于另一端的一次读取,多次写入可能会一起传送,而单次写入可能会被分割。

您必须添加应用级消息协议。