nodejs简单实现TCP服务器端和客户端的聊天功能示例

yizhihongxing

请注意,本篇攻略需要基本掌握Node.js和TCP协议相关知识,以下是实现步骤及示例说明:

1.创建TCP服务器端

使用Node.js内置的net模块创建TCP服务器端,代码如下:

const net = require('net');

const server = net.createServer((socket) => {
  console.log(`客户端 ${socket.remoteAddress}:${socket.remotePort} 连接成功`);

  socket.on('data', (data) => {
    console.log(`从客户端 ${socket.remoteAddress}:${socket.remotePort} 收到数据:${data.toString()}`);

    // 将收到的消息发送回客户端
    socket.write(`服务器已收到消息:${data.toString()}`);
  });

  socket.on('close', () => {
    console.log(`客户端 ${socket.remoteAddress}:${socket.remotePort} 断开连接`);
  });
});

server.listen(8080, () => {
  console.log(`TCP 服务器端已启动,监听端口 8080`);
});

以上代码中,使用net.createServer()方法创建了一个TCP服务器端。当有客户端连接上来时,会触发connection事件,并返回一个socket对象。后续通过监听socket对象的data事件来获取客户端发送过来的数据,回复客户端的操作则通过调用socket.write()方法进行。

2.创建TCP客户端

同样地,使用Node.js内置的net模块创建TCP客户端,代码如下:

const net = require('net');

const client = net.createConnection({ port: 8080 }, () => {
  console.log(`TCP 客户端已连接到服务器`);
});

client.on('data', (data) => {
  console.log(`从服务器收到数据:${data.toString()}`);
});

client.on('close', () => {
  console.log(`TCP 客户端已断开连接`);
});

// 获取用户输入并发送给服务器
process.stdin.on('data', (data) => {
  client.write(data);
});

以上代码中,使用net.createConnection()方法连接到指定端口的TCP服务器端。连接成功后,会触发connect事件。后续通过监听client对象的data事件来获取服务器端发送过来的数据,同时使用process.stdin来获取用户的输入。用户输入时触发data事件,将输入的数据发送给服务器端则通过调用client.write()方法进行。

3.实现TCP客户端和服务器端的聊天功能

将以上的代码整合起来,就可以实现TCP客户端和服务器端的聊天功能了。例如服务器端代码如下:

const net = require('net');

const server = net.createServer((socket) => {
  console.log(`客户端 ${socket.remoteAddress}:${socket.remotePort} 连接成功`);

  socket.on('data', (data) => {
    console.log(`从客户端 ${socket.remoteAddress}:${socket.remotePort} 收到数据:${data.toString()}`);

    // 将收到的消息发送回客户端
    socket.write(`服务器已收到消息:${data.toString()}`);
  });

  socket.on('close', () => {
    console.log(`客户端 ${socket.remoteAddress}:${socket.remotePort} 断开连接`);
  });
});

server.listen(8080, () => {
  console.log(`TCP 服务器端已启动,监听端口 8080`);
});

客户端代码如下:

const net = require('net');

const client = net.createConnection({ port: 8080 }, () => {
  console.log(`TCP 客户端已连接到服务器`);
});

client.on('data', (data) => {
  console.log(`从服务器收到数据:${data.toString()}`);
});

client.on('close', () => {
  console.log(`TCP 客户端已断开连接`);
});

// 获取用户输入并发送给服务器
process.stdin.on('data', (data) => {
  client.write(data);
});

开启服务器端后,可以使用终端启动多个客户端进行测试。在不同的终端输入消息,可以实现客户端和服务器端的聊天功能。

4.示例说明

示例一:简单聊天

在多个终端上启动客户端,输入不同的消息,则可以在各个终端上收到其他人发送过来的消息,实现简单的聊天功能。

例如,终端A输入消息Hello, World后,终端B会收到类型如下的消息:

从服务器收到数据:服务器已收到消息:Hello, World

而在其他终端上也可以收到类似的消息。

示例二:模拟TCP客户端/服务器端通讯

学习TCP通讯过程中,我们往往需要模拟既有TCP客户端又有TCP服务器端的通讯过程。

你可以在同一计算机上启动两个进程,一个作为TCP服务器端,另一个作为TCP客户端。通过模拟实际客户端和服务器端的通讯过程,深入理解TCP通讯的实现过程。

例如,根据以上的示例一代码,启动TCP服务器端并在终端上输入任意消息。在另一个终端上启动TCP客户端并输入消息,可以在服务器端的终端和客户端的终端上都看到通讯过程中的输出信息,例如连接成功、消息收到/发送等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs简单实现TCP服务器端和客户端的聊天功能示例 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • node.js中get和post接口教程

    Node.js中Get和Post接口教程 在Node.js中,我们可以使用HTTP模块来创建接口并处理HTTP请求和响应。本教程将演示如何使用Node.js创建Get和Post请求的接口。 Get请求 Get请求通常用于获取数据。在Node.js中,您可以使用req.query获取查询字符串中的参数,并使用res.send方法将数据作为响应发送回客户端。 以…

    node js 2023年6月8日
    00
  • 深入学习nodejs中的async模块的使用方法

    下面是关于深入学习nodejs中的async模块的使用方法的完整攻略。 引言 Node.js 中的异步编程是其最重要的特性之一,但其在编写复杂程序时会带来一些挑战。异步操作常常需要按照某种顺序进行,或者需要等待多个异步操作全部完成,才能进行下一步操作。为了解决这些问题,Node.js 社区开发了许多流行的异步编程库,如async库。 async是一个流行的用…

    node js 2023年6月8日
    00
  • 在 Node.js 中使用原生 ES 模块方法解析

    使用原生 ES 模块方法解析在 Node.js 中加载模块有很多好处,比如可以避免使用 CommonJS 模块时可能发生的命名冲突问题,加快了模块的加载速度等。下面是使用原生 ES 模块方法解析的完整攻略。 攻略步骤 步骤一:在 package.json 中声明 “type” 字段为 “module” 在使用原生 ES 模块方法解析之前,需要在项目的 pac…

    node js 2023年6月8日
    00
  • 微信小程序搭载node.js服务器的简单教程

    我们来详细讲解如何搭载一个微信小程序,使其能够与一个node.js服务器进行交互。 前置条件 在开始创建微信小程序之前,请确保准备好以下工具: 微信开发者工具 node.js安装包 npm管理工具 创建微信小程序 首先,我们需要在微信开发者工具中创建一个新的微信小程序项目。在创建项目时,需要设置好项目的appid,并选择一个模板来快速创建项目结构。 创建完毕…

    node js 2023年6月8日
    00
  • javascript中的107个基础知识收集整理 推荐

    JavaScript基础知识收集整理攻略 概述 近年来,JavaScript在Web领域的应用越来越广泛,成为Web开发人员必备技能之一。为了帮助大家更好地学习JavaScript,本攻略汇总总结了107个JavaScript基础知识,包括变量、数据类型、数组、函数、对象等,从而帮助初学者更好地掌握JavaScript编程。 变量 变量的定义 变量是存储数据…

    node js 2023年6月8日
    00
  • VUE+node(express)实现前后端分离

    介绍 前后端分离是一种流行的应用架构,它将前端和后端的代码分别放置在不同的服务器上,通过 API 接口来进行通信。这种架构方式具有很多优点,比如可以提高应用的并发能力、减小服务器压力、便于扩展性等等。下面我将介绍如何使用VUE和Node.js的Express实现前后端分离。 前端实现 步骤一:安装VueCLI 为了快速创建Vue.js应用程序,我们需要先安装…

    node js 2023年6月8日
    00
  • 解读node.js中的path路径模块

    节点(Node.js)的path模块提供了一些有用的函数来管理文件路径。 在本攻略中,我们将讨论这个模块的一些常用函数,以及如何使用它们解析文件路径。 获取文件名 使用path模块可以方便地解析文件名,例如,path.basename()函数可以从文件路径中提取文件名。 const path = require(‘path’); console.log(pa…

    node js 2023年6月8日
    00
  • AJAX实现仿Google Suggest效果

    下面是AJAX实现仿Google Suggest效果的完整攻略。 前言 Google Suggest是指当用户在搜索框中输入关键字时,搜索框下方会弹出一些匹配这些关键字的搜索建议,帮助用户更快速、准确地输入搜索内容。该功能采用了 AJAX 技术(Asynchronous JavaScript and XML,异步JavaScript和XML),在用户输入文本…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部