我是Node.js概念的新手。我正在研究使用Unix套接字作为C和Node.js之间的通信方式。
在C: 我正在发送1000个100字节长消息的迭代。
在Node.js中: 我收到4个大小的数据回调:
我知道我能够收到完整的数据。但是,如何在1000个回调中获取每个大小为100字节的数据(与发送方式相同)。
C中的服务器(部分):
char buf[100];
int loop_count = 0;
memset(buf,0xA5,sizeof(buf));
while(loop_count < 1000) {
rc = sizeof(buf);
if (write(cl, buf, rc) != rc) {
if (rc > 0) fprintf(stderr,"partial write");
else {
perror("write error");
exit(-1);
}
}
++loop_count;
}
Node.js中的客户端:
var net = require('net');
var client = net.createConnection("temp");
#temp is the socket file name
client.on("connect", function() {
console.log("Connection established");
});
client.on("data", function(data) {
console.log("Found data "+data);
});
答案 0 :(得分:0)
套接字缓冲区数据,因此当您将100字节的块写入套接字时,读取器不一定会以整齐的100字节块读取数据。
您可以使用像block-stream
这样的模块将数据拆分为100字节的块:
const BlockStream = require('block-stream');
const net = require('net');
const client = net.createConnection('temp');
const bs = new BlockStream(100);
let count = 0;
client.pipe(block).on('data', function(data) {
count++;
console.log('Found data: ', data);
}).on('end', function() {
console.log('Read %s blocks', count);
});