前言
想必我们在用Node.js用的最多的应该是创建http服务,所以对于每个Web开发工程师而言,Node.js的网络相关模块学习是必不可少。
Node.js的网络模块架构
在Node.js的模块里面,与网络相关的模块有Net、DNS、HTTP、TLS/SSL、HTTPS、UDP/Datagram,除此之外,还有v8底层相关的网络模块有
tcp_wrap.cc、
udp_wrap.cc、
pipe_wrap.cc、
stream_wrap.cc等等,在Javascript层以及C++层之间通过process.binding进行桥接相互通信。
Net模块
Net模块提供了一些用于底层的网络通信接口,包括创建服务器以及客户端,其中HTTP模块也是基于Net模型的上层封装,在Net模块里面主要提供net.Server以及net.Socket
创建TCP服务端
创建一个TCP服务器,可以通过使用构造函数
new net.Server或者使用工厂方法
net.createServer,这两个方法都会返回一个net.Server类,可接收两个可选参数。
var net = require('net');var server = net.createServer(function(socket){
socket
.on('data',function(data){
console.log('socket data',data.toString());
socket.write( data.toString() );
})
.on('end',function(){
console.log('socket end')
})
.on('error',function(error){
console.log('socket error',error);
});
});
server.listen(56200,function(){
console.log('server run at ',server.address());
});
server.on('error',function(err){
throw err;
});
// 执行后:server run at { address: '::', family: 'IPv6', port: 56200 }
在listen监听的时候没有指定端口的话会自动随意监听一个端口,创建完成一个TCP服务器后,使用
tenlent 0.0.0.0 56200,链接后可与服务器进行数据通信。通过
createServer实例化一个服务后,服务会去监听客户端请求,与客户端建立了链接之后会在回调里面抛出建链的
net.Socket对象。创建TCP客户端
创建一个TCP客户端链接可以使用构造函数
new net.Socket或者其工厂方法
net.createConnection,创建成功后都会返回一个net.Socket实例。








