在Node.js中,提供了一個net模塊與一個dgram模塊,分別用於實現TCP與UDP的數據通信。
TCP是一種基於鏈接的協議,再進行通信前,首先要求客戶端與服務器建立一條通信的鏈接。二UDP是一種面向非鏈接的協議,再進行通信前,不要求首先建立客戶端與服務器端的鏈接,可以直接把數據包發送給對方。基於這個原因,UDP也是一種不可靠的協議,但其傳輸速率更快,因此更適合實時通信的場合。
使用net模塊實現基於TCP的數據通信
var net = require('net');
var server = net.createServer(function(socket){
console.log(socket.address());
});
server.listen(2000,'localhost', function(){
console.log('開始監聽');
});
使用dgram模塊實現基於UDP的數據通信
客戶端:
var dgram = require('dgram');
var message = new Buffer('你好。');
var client = dgram.createSocket('udp4');
client.send(message, 0, message.length,2000, 'localhost', function(err, bytes){
if(err) console.log('發送數據失敗');
elseconsole.log('已發送 %d 字節數據', bytes);
});
client.on('message', function(msg, rinfo){
console.log('%s',msg);
console.log('%s',rinfo.address);
console.log('%s',rinfo.port);
});
服務器端:
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
server.on('message', function(msg, rinfo){
console.log('已接收客戶端發送的數據:' + msg);
console.log('客戶端地址信息爲:%j', rinfo);
varbuf = new Buffer('確認信息:' + msg);
server.send(buf,0, buf.length, rinfo.port, rinfo.address);
});
server.on('listening', function(){
varaddress = server.address();
console.log('服務器開始監聽,地址信息爲%j', address);
});
server.bind(2000, 'localhost');