node.js - 如何从 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() {
});
解决方案
我解决了这个问题。问题是由这条线引起的。
client.setEncoding('utf8'); // Delete this line
任何形式的编码都会将缓冲区更改为字符串形式。
推荐阅读
- android - 在android studio中同步失败
- android - 反应原生 android 版本 0.57
- oracle - 如何创建检查 vlue 是否低于产品的 reorder_point 属性的更新语句
- android - 在创建用户firebase android之前检查电子邮件是否存在
- ros - 我怎样才能摆脱错误:找不到包'turtlebot_gazebo'?
- corda - 节点可以在没有状态 cordapp 的情况下签署交易吗?
- python - Matplotlib 压缩 Y-Ticks 很有用
- reactjs - 反应测试以查看组件是否返回另一个组件?
- nginx - 重定向到 www 在 Nginx 服务器上不起作用
- sql - SQL Server:根据列中的日期返回最近的记录