您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

Node基于TCP建立的服务器

时间:2022-07-18 14:07:37  来源:  作者:很懒的程序员

创建TCP服务器

Node.js中提供.NET模块,用来实现TCP服务器与TCP客户端之间的通信。

当我们使用JAVAScript来开发服务端的时候,只需要调用net模块就可以了。比如现在要创建一个TCP服务器,代码如下:App.js

const net = require("net");
const server = net.createServer(() => {
    console.log("客户端与服务器端连接已经建立")
})

server.listen("8000", 'localhost', function () {
    console.log("服务端开始监听")
    console.log("地址信息:",server.address())
})

这是简单的一个TCP通信,现在执行命令:node app.js

在浏览器输入localhost:8000。

这是终端的信息:

服务端开始监听
地址信息: { address: '127.0.0.1', family: 'IPv4', port: 8000 }
客户端与服务器端连接已经建立

我们的浏览器输入localhost:8000回车后,就是客户端与服务端建立的TCP通信。启动服务端,但是客户端没有连接,终端信息如下:

服务端开始监听
地址信息: { address: '127.0.0.1', family: 'IPv4', port: 8000 }

 

createServer方法返回被创建的TCP服务器,它的回调函数有一个参数,是TCP服务器监听的socket端口对象。这是在createServer的回调函数中监听connection事件。

 

然而,我们可以单独对connection事件进行监听:

const net = require("net")
const server = net.createServer();

server.listen(8000, 'localhost', function () {
    console.log('地址信息:', server.address())
});

server.on("connection", function (socket) {
    console.log('客户端开始已经连接');
    socket.setEncoding('utf8'); // 设置内容格式
    socket.on("data", function (res) {
        console.log("data==", socket.bytesRead)
    });

    socket.on('end', function () {
        console.log("客户端关闭连接")
    })
})

 

现在我们建立好了TCP服务器。

可以使用socket对象的pipe方法将客户端发送的数据流写入到其他文件中去:

客户端的完整代码:

const net = require("net")
const server = net.createServer();
const file = require('fs').createWriteStream('./text.txt');


server.listen(8000, 'localhost', function () {
    console.log('地址信息:', server.address())
});

server.on("connection", function (socket) {
    console.log('客户端开始已经连接');
    socket.setEncoding('utf-8'); // 设置内容格式
    socket.on("data", function (res) {
        console.log("data==", socket.bytesRead)
    });
    socket.pause();
    socket.resume();     
    socket.pipe(file, { end: false });
    // 客户端关闭连接时候,添加的结束标志
    socket.on("end", function () {
        file.end("结束了");
        socket.unpipe(file); // 取消对文件的写入
    })
    socket.on('end', function () {
        console.log("客户端关闭连接")
    })
})

创建TCP客户端

const net = require("net");
const client = new net.Socket();
client.setEncoding("utf8");
client.connect(8000, 'localhost', function () {
    console.log('已经连接服务器了');
    client.write('你好')
});

client.on('data', function (data) {
    console.log("服务器发送的数据", data)
})

客户端连接服务端后,服务端的日志文件text.txt,写入了“你好”



Tags:Node   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
理解 Node.js 中的事件循环
你已经使用 Node.js 一段时间了,构建了一些应用程序,尝试了不同的模块,甚至对异步编程感到很舒适。但是有些事情一直在困扰着你——事件循环(Event Loop)。如果你像我...【详细内容】
2024-01-05  Search: Node  点击:(124)  评论:(0)  加入收藏
让Node.js加速你的网络应用开发之旅
Node.js 是一个基于Chrome V8 引擎的JavaScript运行时,用于构建高性能、可伸缩的网络应用。它的出现在很大程度上改变了后端开发的方式,并成为了现代Web开发中不可或缺的一部...【详细内容】
2023-12-13  Search: Node  点击:(188)  评论:(0)  加入收藏
Nodejs 的 CommonJS 规范实现原理
了解 Node.js Node.js 是一个基于 ChromeV8 引擎的 JavaScript 运行环境,使用了一个事件驱动、非阻塞式 I/O 模型,让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为...【详细内容】
2023-11-24  Search: Node  点击:(201)  评论:(0)  加入收藏
告别Node.js版本困扰,轻松切换开发环境!
最近,在下载别人的开源项目进行学习的时候,总是因为 Node 环境问题导致没法依赖无法正常安装,因为人家开源项目限制了一定要高于某个版本,差点劝退了我。Node版本限制因为平时偶...【详细内容】
2023-11-08  Search: Node  点击:(277)  评论:(0)  加入收藏
19 种常见的 JavaScript 和 Node.js 错误
译者 | 刘汪洋审校 | 重楼速度、性能和响应性在 Web 开发中起着至关重要的作用,尤其是在使用 JavaScript 和 Node.js 开发时尤为重要。如果一个网站响应缓慢或界面卡顿,就会让...【详细内容】
2023-11-03  Search: Node  点击:(195)  评论:(0)  加入收藏
通过这个技术,浏览器可以运行Node.js、Rust、Python、PHP、C++、Java代码了!
近日,WebContainers 发布重要更新,WASI(WebAssembly 系统接口)已全面集成到 WebContainers 中。这是一个重要里程碑,它扩大了可以使用浏览器执行的操作,是 Web 开发的全新范例,允许...【详细内容】
2023-10-13  Search: Node  点击:(276)  评论:(0)  加入收藏
为什么Node.js 是后端开发的规则改变者
作者丨P. Rehan编译丨诺亚“Node.js有危险了!”“任何能够自救的开发人员都应该尽快迁移到另一个后端环境!”JavaScript的仇恨者说。不用理会这些言论。Node.js将继续存在,并...【详细内容】
2023-09-09  Search: Node  点击:(251)  评论:(0)  加入收藏
Node.js 终于原生支持 .env 文件了!
近日,Node.js 团队核心成员 Ulises Gascón 在社交平台表示,Node.js 20.6 版本将原生支持 .env 文件,该版本计划于 8 月 28 日发布。下面就来看看 .env 文件是什么,有什么...【详细内容】
2023-08-29  Search: Node  点击:(385)  评论:(0)  加入收藏
Wasp框架开源:最快的 React + Node 全栈应用开发!
什么是 WaspWasp(Web 应用程序规范)是一个类似 Rails 的 React、Node.js 和 Prisma 框架,借助于该框架开发者可以快速构建应用程序并使用单个 CLI 命令进行应用部署。Wasp 的典...【详细内容】
2023-08-09  Search: Node  点击:(319)  评论:(0)  加入收藏
node http请求
对于前端来说,网络请求主要就是用 ajax 的方式去处理。所以本文也会站在前端角度简单讲解 Node 中如何使用 http 模块。前后端对接时,现在常用的请求方法有 GET、POST、PUT、P...【详细内容】
2023-05-22  Search: Node  点击:(124)  评论:(0)  加入收藏
▌简易百科推荐
为什么Nginx被称为“反向”代理呢?
Nginx(发音为"engine-x")是一款高性能、轻量级的开源Web服务器软件,也可用作反向代理服务器、负载均衡器和HTTP缓存。Nginx之所以有被称为“反向”代理,是因为它充当客户端设备...【详细内容】
2024-02-01  coderidea  微信公众号  Tags:Nginx   点击:(61)  评论:(0)  加入收藏
哪种服务器操作系统更好呢?
在当今的IT世界中,服务器操作系统扮演着至关重要的角色。它们是确保服务器能够高效、安全地运行的关键因素。然而,对于许多人来说,服务器操作系统的种类和特点可能是一个复杂的...【详细内容】
2024-01-30    简易百科  Tags:操作系统   点击:(81)  评论:(0)  加入收藏
什么是VPS服务器
VPS服务器是一种虚拟化技术,它将一台物理服务器划分为多个虚拟的独立服务器,每个虚拟服务器都可以拥有自己的操作系统、运行环境、应用程序等。这种技术使得每个虚拟服务器可...【详细内容】
2024-01-30    简易百科  Tags:VPS服务器   点击:(76)  评论:(0)  加入收藏
VPS服务器下载速度慢?这五招帮你提速
VPS服务器下载速度慢可能会让用户感到沮丧,尤其是对于需要大量下载和上传数据的用户。幸运的是,有一些方法可以帮助您提高VPS服务器的下载速度,使您的在线体验更加顺畅。在本文...【详细内容】
2024-01-30  IDC行业观察者    Tags:VPS服务器   点击:(61)  评论:(0)  加入收藏
美国VPS和英国VPS:地理位置对服务器性能的影响
在今天的数字时代,VPS已成为在线业务和网站托管的关键组成部分。然而,选择合适的VPS主机服务时,地理位置通常被忽视,尽管它对服务器性能有着重要的影响。本文将探讨美国VPS和英...【详细内容】
2024-01-26  IDC行业观察者    Tags:服务器   点击:(56)  评论:(0)  加入收藏
如何判断服务器所需带宽:基于业务需求和流量模式的关键考量
在选择服务器时,带宽是一个重要的考虑因素。带宽的大小直接影响到网站的加载速度和用户的访问体验。那么,如何判断服务器需要多大的带宽呢?本文将为你揭示这一关键问题的答案...【详细内容】
2024-01-26  源库科技    Tags:服务器   点击:(81)  评论:(0)  加入收藏
服务器内存空间及IO操作原理解析
服务器的内存空间分为内核空间和用户空间,而我们编写的程序通常在用户空间中运行。在进行读写操作时,我们直接操作的是用户缓冲区,而用户缓冲区的内容来自于内核缓冲区。这种内...【详细内容】
2024-01-23  王建立    Tags:服务器   点击:(46)  评论:(0)  加入收藏
如何在Java环境中安装Nginx?
1. 下载Nginx:首先,前往Nginx官方网站(https://nginx.org/en/download.html)下载新版本的Nginx。选择适合您操作系统的版本,通常有Windows、Linux和Mac等不同操作系统的版本可供...【详细内容】
2024-01-22  敲代码的小动    Tags:Nginx   点击:(71)  评论:(0)  加入收藏
服务器证书和SSL证书有啥区别?
在互联网经济时代,随着越来越多的信息以及合作都是从企业官网开始的,因此绝大多数企业都会为自己的网站配置SSL证书,以提高安全性。在接触SSL证书时,也有很多人称之为服务器证书...【详细内容】
2024-01-10  安信SSL证书    Tags:服务器证书   点击:(67)  评论:(0)  加入收藏
宝塔面板怎样部署java项目?
宝塔面板怎样部署java项目?在使用宝塔面板部署Java项目之前,需要确保已经安装了Java Development Kit (JDK)。接下来,将介绍如何使用宝塔面板来部署Java项目的步骤。步骤一:安装...【详细内容】
2024-01-09  西部数码    Tags:宝塔面板   点击:(128)  评论:(0)  加入收藏
站内最新
站内热门
站内头条