node.js当中net模块的简单应用(基于控制台的点对点通讯)

咱们可使用node.js当中内置的net模块来建立socket服务端和socket客户端,实现一个简单的基于控制台的点对点通讯。node

1、利用net模块创建socket客户端

一、引包
const net = require('net');
二、与指定IP地址和端口号的服务端创建链接
const client = net.connect({port:number,host:string},()=>{

});

其中port参数填写数值类型的服务端的端口号,host参数填写字符串类型的服务端的IP地址。若host参数不写,则默认与本机上的指定端口创建链接。当这个新建的客户端与指定的服务端创建了链接以后,触发该回调函数,该回调函数没有参数,回调函数内部用自定义的变量client来表明这个客户端。服务器

三、客户端与服务端收发数据

在该客户端与服务端完成链接创建的回调函数以内,使用client.write();能够完成从客户端向服务端发送数据,使用client.on('data',(chunk)=>{});能够接收服务端发送的数据,当接收到服务端发送的数据时触发该回调函数,chunk.toString()便可获取服务端发送的数据内容。
如下为client.js的示例代码:socket

const readline = require('readline');
const net = require('net');
const rl = readline.createInterface(process.stdin,process.stdout);
const client = net.connect({port:2080,host:'192.168.155.1'},()=>{
    rl.on('line',(line)=>{
        client.write(line.trim());
    });
    client.on('data',(chunk)=>{
        console.log(chunk.toString());
    });
});

2、利用net模块创建socket服务端

一、引包
const net = require('net');
二、建立一个socket服务端
const server = net.createServer((socket)=>{

});

这里表示建立了一个socket服务器,并用一个自定义的server变量来接收,当有客户端与该服务端创建链接时,会触发执行该回调函数,而且回调函数内部使用指定的形参socket对象。函数

3.让新建立的socket服务端监听一个指定的端口。

建立完socket服务端以后,必须让其监听该操做系统上的某一个特定端口,不然没有任何意义。ui

var port = 2080;
server.listen(port,(err)=>{
    if(err){
        console.log('该端口被占用!');
        return false;
    };
    console.log(`服务端正常启动,监听${port}端口!`);
});

为了不出现端口被占用的状况出现,能够令port=0;,0不是一个标准的端口号,传0的效果为系统会随机分配一个当前操做系统当中未被占用的端口号。spa

在第2步的回调函数当中,使用socket.remoteAddress能够获得与本机相链接的那个远端客户端的IP地址,使用socket.remotePort能够获得与本机相链接的那个远端客户端的端口号,使用socket.localAddress能够获得本机的IP地址,使用socket.localPort能够获得该socket服务器所使用的端口号。
使用socket.write();能够完成从服务端向客户端发送数据,使用socket.on('data',(chunk)=>{});能够接收客户端发送的数据,当接收到客户端发送的数据时触发该回调函数,chunk.toString()便可获取客户端发送的数据内容。
如下为socket.js的示例代码:操作系统

const net = require('net');
const readline = require('readline');
const rl = readline.createInterface(process.stdin,process.stdout);
const server = net.createServer((socket)=>{
    rl.on('line',(line)=>{
        socket.write(line.trim());
    });
    socket.on('data',(chunk)=>{
        console.log(chunk.toString());
    });
});
var port = 2080;
server.listen(port,(err)=>{
    if(err){
        console.log('该端口被占用!');
        return false;
    };
    console.log(`服务端正常启动,监听${port}端口!`);
});

先在控制台上启动server.js,而后再启动client.js文件,接下去便可在两个端之间实现基于控制台的点对点收发消息。以下图所示。code

图片描述

相关文章
相关标签/搜索