Node.js网络编程
Posted calm寻路人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js网络编程相关的知识,希望对你有一定的参考价值。
一:Node.js中的套接字服务由Net模块提供,其中包含了创建服务器/客户端的方法。
(1):Net模块提供的API:
net.createServer([optinons][,connectionListener]) | 创建了一个TCP服务器,参数connectionListener自动给connection事件创建监听. |
net.connect() | 返回一个新的net.Socket,并且连接到指定的地址和端口,当socket创建的时候,将会触发connect事件. |
net.createConnection(options[,connectionListener]) | 创建一个端口指定port和ip的TCP连接 |
服务器端代码:
/* 1:server对象中可以被触发事件 listening:当服务器调用server.listen绑定后会触发 connection:当新连接创建后会被触发. close:服务器关闭时会被触发: error:发生错误时触发,close事件将被下列事件直接调用. */ var net = require(‘net‘); var server = net.createServer(); //等到一个实列化的服务器对象. //监听客户端的连接事件connection(),连接成功就会执行回调函数. server.on(‘connection‘,function() { console.log(‘有客户连接上来了‘); }); server.on(‘listening‘,function(){ console.log(‘服务器开始监听‘); }); server.listen(8888,‘127.0.0.1‘); /* server.on(‘close‘,function(){ console.log(‘关闭了服务器‘); }); server.close(function(){ console.log(‘开始关闭服务器‘); var s = server.address(); console.log(s); }); */ /* 2:服务器端可以调用的函数: server.listen(port,host,backlog,callback) host:接受任何IPV4地址. server.listen(path[,clallback]) 通过指定path的连接,启动一个本地socket服务器. server.close(clallback) 服务器停止接收新的连接,保持现有连接,这是异步函数,当所有连接结束的时候 服务器会关闭,并触发close事件. server.address() 操作系统返回绑定的地址,协议簇名和服务器端口 server.getConnections(callback) 异步获取服务器当前活跃连接的数量.当socket发送给子进程后才有效;回调函数有两个参数 err和count. */
二:Net.Socket对象;Net.Socket实例实现了一个Duplex(双工,双向)流接口,提供了Writeable和Readable所有功能,所以可以说它是可读流也是可写流.
/* 1:当客户端进行连接时会触发connection事件,事件的回调函数会把客户端的IP地址 和端口号封装到一个Socket对象中. */ /* 2:socket对象可调用函数: net.Socket([options]):构造一个新的socket对象; socket.connect(port[,host][,connectListener]) 指定端口和地址进行连接服务器. socket.write(data[,encoding][,callback]) 在socket上发送数据. socket.address(); 返回服务器的一些信息. */ /* 3:socket对象可以触发的事件 lookup:在解析域名时,但在连接前,触发这个事件 connect:成功建立socket连接时触发. data:当接受到数据时触发: end:当socket另一端发送FIN包时,触发该事件 timeout:当socket空闲时触发,仅仅表明socket已经空闲. error: close:当socket关闭时触发. */ var net = require(‘net‘); var server = net.createServer(); server.on(‘connection‘,function(socket) { console.log(‘有客户连接上‘); console.log(‘有客户端IP地址:‘+socket.remoteAddress+‘连接到了当前服务器‘); socket.write(‘hello world‘); socket.address();//返回服务器 var l = socket.bytesWritten(); console.log(‘发送的字节数‘+l); socket.on(‘data‘,function(){ console.log(‘收到客户端发送来的信息‘); }); }); server.on(‘listening‘,function(){ console.log(‘服务器开始监听成功了,正在等待客户连接‘); }); server.listen(8888,‘127.0.0.1‘); /* 4:socket对象的属性: socket.remoteAddress:远程的IP地址字符串. socket.localPort:本地端口地址,用数字表示, socket.bytesRead:接受到的字节数. socket.bytesWritten:发送的字节数; */
以上是关于Node.js网络编程的主要内容,如果未能解决你的问题,请参考以下文章