TCP與UDP的數據通信

Node.js中,提供了一個net模塊與一個dgram模塊,分別用於實現TCPUDP的數據通信。

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');

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章