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网络编程的主要内容,如果未能解决你的问题,请参考以下文章

你可能不知道的JavaScript代码片段和技巧(下)

你可能不知道的JavaScript代码片段和技巧(上)

vscode代码片段建议bug

从Node.js Stream写入多个文件

2021了,真的不要再说 Node.js 是一门编程语言了

2021了,真的不要再说 Node.js 是一门编程语言了