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

 2023-09-05 阅读 2286 评论 0

摘要:我们可以使用node.js当中内置的net模块来创建socket服务端和socket客户端,实现一个简单的基于控制台的点对点通信。 一、利用net模块建立socket客户端 1、引包 const net = require('net'); 2、与指定IP地址和端口号的服务端建立连接 const client =

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

一、利用net模块建立socket客户端

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

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

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

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

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());});
});

二、利用net模块建立socket服务端

1、引包
const net = require('net');
2、创建一个socket服务端
const server = net.createServer((socket)=>{});

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

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

创建完socket服务端之后,必须让其监听该操作系统上的某一个特定端口,否则没有任何意义。

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

为了避免出现端口被占用的情况出现,可以令port=0;,0不是一个标准的端口号,传0的效果为系统会随机分配一个当前操作系统当中未被占用的端口号。

在第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文件,接下去即可在两个端之间实现基于控制台的点对点收发消息。如下图所示。

图片描述

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/412.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息