首页 > 解决方案 > 如何从 Node.js 网络模块接收缓冲区形式的传入数据?

问题描述

当我从网络服务器接收传入数据时,它总是一个字符串形式。
它导致一些字节数据丢失。

但是根据Node.js docs page,似乎可以以缓冲区格式接收数据。

事件:'data' 添加于:v0.1.90 接收数据时发出。参数数据将是一个缓冲区或字符串。数据的编码由 socket.setEncoding() 设置。(有关更多信息,请参阅可读流部分。)

请注意,如果 Socket 发出 'data' 事件时没有侦听器,则数据将丢失。

如何以缓冲区形式接收数据?

let net_server = require('net');

let server = net_server.createServer(function(client) {

    client.setTimeout(10000);
    client.setEncoding('utf8');

    client.on('data', function(recvBuffer) {
        // recvBuffer is string form
    });
});

server.listen(process.argv[2], function() {
});

标签: node.js

解决方案


我解决了这个问题。问题是由这条线引起的。

client.setEncoding('utf8'); // Delete this line

任何形式的编码都会将缓冲区更改为字符串形式。


推荐阅读