
行程與執行緒 Process & Threads
執行外部命令
這是最常被需要的功能之一,因為往往我們需要執行額外的應用程式或是命令,來協助我們完成工作。為達到這個功能,引入Node.js內建的child_process核心模組,然後/使用它的exec()方法即可。
var child_process = require('child_process');
//執行命令 ls -lh /usr
child_precess.exec('ls -lh /usr', function(err, stdout, stderr)
{
if (err) {
throw err;
return;
}
console.log(stdout);
});
//windows 系統
var path = 'dir c:\\';
//Linux 系統
var path = 'ls -lh /usr';
//執行命令
child_process.exec(path, function(err, stdout, stderr)
{
if (err) {
throw err;
return;
}
console.log("\uFEFF",stdout);
});

解決 PowerShell 下 Node.js 中文亂碼
設定 PowerShell 編碼
在 PowerShell 執行一次:
$OutputEncoding = [Console]::OutputEncoding =[Text.UTF8Encoding]::UTF8
這樣就會強制輸出為 UTF-8。

網路 Networkng
NTP網路時間通訊協定
NTP(網路時間通訊協定)是一個用來校時的通訊協定,客戶端可以藉由這個協定取得時間伺服器的時間
開發NTP伺服器
var net = require('net');
var dgrqm = require('dgra');
//設計一個函數,用來輸出符合格式的時間字串
function now() {
return new Buffer(new Date().toUTCString() + '\r\n');
}
//建立TCP 伺服器
var tcpServer = net.createServer(function (clinet) {
//當客戶端連上,回傳時間字串並斷開連線
client.write(now());
client.end();
});
tcpServer.listen(13);
//建立UDP 伺服器
var udpServer = dgram.createSocket('udp4',function(msg, rinfo) {
//當客戶端連上,回傳時間字串
var ts = now();
udpServer.send(ts, 0, ts.length, rinfo.port, rinfo.adress);
});
udpServer.bind(13);
開發NTP客戶端
npm install ntp-client
var ntpClient = require ('ntp-client');
//取得網路時間
ntpClient.getNetworkTime('pool.ntp.org', '123', function(err, data){
//如果取得時間失敗
if(err) {
throw.err;
return;
}
//成功會得到一個標準的 Date 時間物件
console.log(data);
});

FTP 檔案傳輸協定 (File Transfer Protocol)
npm install ftp
var FTP = require('ftp');
//建立FTP 客戶端
var client = new FTP();
//等待連線
client.on('ready', function () {
//印出連線成功訊息
console.log('Connceted');
//結束FTP連線
client.end();
});
//連線到FTP 伺服器
client.connect ({
host: 'ftp.speed.hinet.net',
user: 'ftp',
password: 'ftp'
});