在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‘);