我正在使用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)
答案 0 :(得分:2)
这是TCP的典型特征,它毕竟是面向流的(而不是面向数据包的)协议。
无法保证对网络的一次写入等于另一端的一次读取,多次写入可能会一起传送,而单次写入可能会被分割。
您必须添加应用级消息协议。