私はNode.jsの速度を上げようとしていますが、達成しようとしていることの1つは、Nodeがリスニングサーバーとして機能する単純なファイル転送エージェントを模倣することです。これには、ノードがtcpソケット要求をリッスンし、バイナリデータストリームを受け入れてシステムに保存する必要があります。
私がこれまでに持っているのはこれです。サーバーはまだ何も保存せず、受信したデータを出力するだけです。
サーバ:
var net = require('net');
var fs = require('fs');
var buffer = require('buffer');
var server = net.createServer(function() {
console.log('server connected');
});
var HOST = '127.0.0.1';
var PORT = '9001'
var FILEPATH = '/home/steve/Downloads/';
server.listen(PORT, HOST, function() {
//listening
console.log('server bound to ' + PORT + '\n');
server.on('connection', function(){
console.log('connection made...\n')
})
server.on('data', function(data) {
console.log('data received');
console.log('data is: \n' + data);
});
});
また、簡単にするために、Nodeでもクライアントのハックを作成しました。
クライアント:
var net = require('net');
var fs = require('fs');
var PORT = 9001;
var HOST = '127.0.0.1';
var FILEPATH = '/home/steve/Work/Node.js/FileTransfer/random.fil';
var client = new net.Socket()
//connect to the server
client.connect(PORT,HOST,function() {
'Client Connected to server'
//send a file to the server
var fileStream = fs.createReadStream(FILEPATH);
fileStream.on('error', function(err){
console.log(err);
})
fileStream.on('open',function() {
fileStream.pipe(client);
});
});
//handle closed
client.on('close', function() {
console.log('server closed connection')
});
client.on('error', function(err) {
console.log(err);
});
それらを実行してもエラーは発生しませんが、サーバーはサーバーを作成し、接続を受け入れてから閉じるだけです。それ以上は理解できないようです。また、これは最大1GBの範囲の大きなファイルを転送するための適切なソリューションでしょうか、それともNodeはこのようなものに対応していないのでしょうか。
TIA