图片:1.png
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 }
var net = require('net'); var client = net.createConnection({port:56200,host:'localhost'}); client.on('connect',function(){ console.log('client connect');}); client.on('data',function(data){ console.log('client data',toString());}); client.on('error',function(error){ throw error;}); client.on('close',function(){ console.log('client close');});
var net = require('net');var biz = require('./biz');var server = net.createServer(function(socket){ socket .on('data',function(data){ biz.do(data) .then(function(){ if( !socket.destroyed ) { socket.write( data.toString() ); } else { // do some report socket.destry(); } }) .catch(function(){ !socket.destroyed && socket.end('server handler error'); }); }) .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;});
var net = require('net');var MAX_REQUEST_BYTES = 2 * 1024 * 1024; // 2Mvar server = net.createServer(function(socket){ socket .on('data',function(data){ if(data.bytesRead > MAX_REQUEST_BYTES) { socket.pause(); socket.end('data is too big, forbidden'); // do some report } }) .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;});