createWriteStream和createReadStream无法正常使用Socket

时间:2017-03-21 05:38:04

标签: javascript node.js

let filesend = fs.createReadStream('./flex1.zip', 'utf8')
//let filesend = fs.createReadStream('./flex1.zip')
let fileget = fs.createWriteStream('./test/flex1.zip', 'utf8')
//let fileget = fs.createWriteStream('./test/flex1.zip')
fileget.on('finish', function() {
    console.log('getover')
})

net.createServer(function(socket) {
    socket.pipe(fileget)
    socket.on('error', function(err) {
        console.log(err.message);
    });
}).listen('18800', function() {
    console.log('server_open')
});


let client = new net.Socket();
client.connect('18800', '127.0.0.1', function() {
    filesend.pipe(client);
});

当我调用CreateReadStream和createWriteStream并使用' utf8'设置编码时,我无法获得正确的文件,但是如果我没有设置编码,我可以得到正确的文件。 所有上述情况都发生在仅使用Socket

的情况下

1 个答案:

答案 0 :(得分:0)

如果使用createReadStream createWriteStreamutf8可以正常使用,那么使用套接字或http的天气没有区别。

问题仅在于您的内容需要读/写,以及在插座时您要更改的内容。我可以看到filesend.pipe(client);

如果您可以控制/打印client,并且可以看到它是您想要的,那么只需在没有utf8的情况下编写它,因为您不需要。此外,如果您的客户端对象很好=>(其属性没有无限递归),像utf8这样的编码也没有问题