位置: 编程技术 - 正文

Nodejs学习笔记之NET模块(nodejs实战教程)

编辑:rootadmin

推荐整理分享Nodejs学习笔记之NET模块(nodejs实战教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs入门,nodejs使用视频教程,nodejs基础知识,nodejs.,nodejs基础知识,nodejs实战教程,nodejs实战教程,nodejs入门,内容如对您有帮助,希望把文章链接给更多的朋友!

一,开篇分析

从今天开始,我们来深入具体的模块学习,这篇文章是这个系列文章的第三篇,前两篇主要是以理论为主,相信大家在前两篇的学习中,

对NodeJS也有一个基本的认识,没事!!!趁热打铁,让我们继续将NodeJS进行到底,好了废话不多说,直接进入今天的主题 “Net模块” ,那么”Net“应该如何理解那?

它是做什么用的那?(Net模块可用于创建Socket服务器或Socket客户端。NodeJS 的数据通信,最基础的两个模块是 Net 和 Http,前者是基于 Tcp 的封装,后者本质还是 Tcp 层,只不过做了比较多的数据封装,我们视为表现层)。

这里参考一下NodeJS “http.js” 中的源码:

从图中不难看出 HttpServer继承了Net类,具有了相关的通信能力,做了比较多的数据封装,我们视为更高级的表现层。

扩展知识(以下是“inherits”的源码):

功能是实现继承复用。

刚才做了一个简要的概述,里面有一些常用的概念,这里做个简短的概念普及介绍:

  (1),TCP/IP------TPC/IP协议是传输层协议,主要解决数据如何在网络中传输。

  (2),Socket------socket则是对TCP/IP协议的封装和应用(程序层面)。

  (3),Http------HTTP是应用层协议,主要解决如何包装数据。

  (4),网络七层模型------物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

  总结一下:Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。

  从而形成了我们知道的一些最基本的函数接口,比如Create、Listen、Connect、Accept、Send、Read和Write等等。

  TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口

  实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。

二,体验一把

好了,概念我们也有了,来个例子:

1,建立server.js

2,建立client.js

分析一下:

服务端------net.createServer创建一个 TCP 服务,这个服务绑定(server.listen)在 这个端口上,创建 Server 后我们看到有一个回调函数,

在调用上面函数的时候传入一个参数,这个参数也是函数,并且接受了 socket ,这个由其他方法构造的一个管道(pipe),他的作用就是用来数据交互的。

Nodejs学习笔记之NET模块(nodejs实战教程)

pipe 是需要 Client 跟 Server 打招呼才能建立的,如果此刻没有客户端访问 Server,这个 socket 就不会存在了。

客户端------net.connect顾名思义,就是连接到服务端,第一个参数是对象,设置端口(port)为 ,也就是我们服务器监听的端口,由于没有设置 host 参数,那默认就是 localhost (本地)。

在 Server 中,socket 是管道的一端,而在 client 中,client 本身就是管道的一端,如果是多个客户端连接 Server,Server 会新建多个 socket,每个 socket 对应一个 client。

运行结果:

三,案例引入

(1),下面代码仅仅是服务器向客户端输出一段文本,完成服务端到客户端的单向通讯。

Telnet测试一下:telnet.0.0.1:

执行 telnet后,与服务点连接,反馈 Hi! Bye! 的字符,并立刻结束服务端程序终止连接。

如果我们要服务端接到到客户端的信息?

可以监听 server.data 事件并且不要中止连接(否则会立刻结束无法接受来自客户端的消息)。

(2),监听 server.data 事件并且不要中止连接(否则会立刻结束无法接受来自客户端的消息)。

上面是不是一个完整功能的代码呢?我们说还有一个问题没有考虑进去:那就是一旦某个客户端退出,却仍保留在 clientList里面,这明显是一个空指针。

(3),处理clientList

NodeTCPAPI已经为我们提供了 end 事件,即客户端中止与服务端连接的时候发生。

(4),优化broadcast

注意的是一旦 “end” 没有被触发,会出现异常,所以才做优化工作。

(5),NetAPI中还提供一个 error 事件,用于捕捉客户端的异常

四,总结一下

1,理解开篇的相关概念

2,认识Http与Net模块之间的关系

3,结合本文的例子,查阅相关api去实践

4,socket客户端与服务器端之间的通信思想

5,有兴趣可以完善一下那个聊天室的例子

NodeJS学习笔记之Http模块 一,开篇分析首先Http这个概念大家应该比较熟悉了,它不是基于特定语言的,是一个通用的应用层协议,不同语言有不同的实现细节,但是万变不离其

NodeJS学习笔记之FS文件模块 一,开篇分析文件系统模块是一个简单包装的标准POSIX文件I/O操作方法集。可以通过调用require("fs")来获取该模块。文件系统模块中的所有方法均有异步

NodeJS学习笔记之(Url,QueryString,Path)模块 一,开篇分析这篇文章把这三个模块拿来一起说,原因是它们各自的篇幅都不是很长,其次是它们之间存在着依赖关系,所以依次介绍并且实例分析。

标签: nodejs实战教程

本文链接地址:https://www.jiuchutong.com/biancheng/377951.html 转载请保留说明!

上一篇:Nodejs学习笔记之Stream模块(nodejs基础知识)

下一篇:NodeJS学习笔记之Http模块(nodejs使用视频教程)

  • 资产的计税基础怎么计算
  • 制药企业税收优惠政策
  • 购买汽车的保健因素
  • 金税盘维护费全额抵扣冲减的管理费用怎样结转
  • 待抵扣进项税额怎么算
  • 计提个人社会保险费
  • 安全基金提取标准
  • 基建项目待摊投资
  • 公司持有的房产税
  • 招行理财产品哪些可靠
  • 公司企业变更后原来的营业执照还有吗
  • 筹建期装修费用计入什么科目
  • 工商年报填错了能改吗
  • 如何计算一般稳定球面腔的主要参量
  • 期末未分配利润大于期初未分配利润+期末净利润
  • 个体户租房交房怎么交税
  • 冲销暂估购入原材料的账务处理?
  • 跨年的物业费如何记账
  • 充积分送手机
  • 苹果macbookpro分辨率是多少
  • 负债融资的特点是什么
  • 收回物资的加工成本
  • 个人所得税的征收标准及税率
  • 增值税报表上期留底税额填不上
  • linux配置与管理教程
  • 不发工资先去劳动局投诉还是仲裁
  • 一般纳税人购进农产品如何抵扣进项税额
  • 先出库还是先开票
  • 怎么做合同
  • linux系统命令查询
  • php实现用户登录
  • 后端怎么返回数据给前端
  • 利用php判断文件是否存在
  • Python 高性能 pdf
  • 固定资产到期后残值怎么处理
  • ps打不了字只显示一个点怎么办
  • 美国人用什么英语词典
  • 平价股权转让还需要所得税吗
  • 商会年会活动策划方案模板
  • 收到快递赔款分录怎么做
  • 公司购买理财产品
  • 上月附加税计提多了怎么办
  • python中insert函数怎么用
  • 不缴纳增值税的收入需要缴纳水利税吗
  • mongodb主从复制原理
  • 椅子能放进后备箱吗
  • 事业单位相关规定有哪些
  • 利润分配未分配利润期末有余额吗
  • 给客户的回扣怎么表达
  • 小型微利企业预缴企业所得税怎么算
  • 公司库存现金提现流程
  • 旅游业小规模纳税人税率是多少
  • 购买需要安装的生产设备会计分录
  • 残疾人就业保障金上年职工工资总额
  • 接手前往年的银行余额不平怎么办?
  • 会计账户分类是什么意思
  • sql解析器是什么
  • mysql 5.7.9 winx64在windows上安装遇到的问题
  • win7硬盘设置在哪里设置
  • 微软出win9了吗
  • 盗版win10可以用win10商店吗
  • 360tray占用大量内存
  • Win7防火墙怎么设置
  • win7系统网络连接禁用怎么开启
  • win7旗舰版磁盘清理
  • win7电脑dns错误不能上网怎么办
  • Unity3D游戏开发标准教程
  • 基于jquery的框架有哪些
  • python 进程间通讯
  • ReactNative 之FlatList使用及踩坑封装总结
  • windows设置开机启动软件
  • jQuery使用$.ajax提交表单完整实例
  • vue复用node_module
  • python中的urllib
  • android开发主要用什么语言
  • python中ans
  • javascript面向对象编程指南
  • jquery 插件编写
  • jquery.validator
  • 退休个人所得税专项附加扣除减免
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设