Node网络编程

7 篇文章 0 订阅

网络编程

Node实现TCP协议

TCP协议

TCP协议:传输控制协议,提供面向连接的可靠的数据传输服务(三次握手四次挥手)。

  • 面向连接:数据传输之前,客户端与服务器端要建立连接
  • 可靠的:数据传输是有序的、要对数据进行校验

Scoket网络套接字,是一套用于不同主机间通信的API,它工作在TCP/IP协议栈之上,是进行网络连接的数据结构。

  • 服务器的Socket:实现对指定端口号的监听,若有客户端向监听的端口发出连接请求,Socket就会监听到
  • 客户端的Socket:向服务器端发送请求

Net模块提供的API

net核心模块用于创建TCP连接和服务,封装了大部分底层的类和方法,方便用户使用TCP进行网络连接。

//导入net模块
const net = require('net');
net.Server类

用于创建服务器端(TCP服务器)。

//构建方法
const server = new net.Server([参数]);

//快捷方式 返回的是一个对象
const server = net.createServer([参数]);

net.Server类实现的事件

事件解释
close当服务器关闭时被触发,如果有连接存在,则直到所有连接结束才会触发这个事件
connection当一个新的连接建立时被触发
error发生错误时被触发
listening当服务器被绑定后调用server.listen()方法

net.Server类提供的方法

方法解释
server.address( )返回绑定的ip地址、地址族和服务端口
server.close( )使服务器停止接受建立新的连接并保持现有的连接
server.listen( )启动一个服务器来监听连接
net.Socket类

用于创建客户端(TCP客户端)。

const client = net.Socket([参数]);	

在这里插入图片描述

Node实现UDP协议

UDP协议用户数据报协议,提供的是不可靠的面向无连接的传输服务(只有数据报的发送方和接收方)。

  • 面向无连接:在传输数据之前没有明确的连接链路(即不是所有的数据都是通过一条链路传输)
  • 不可靠的:因为数据传输不是通过一条链路完成的,因此接收方接收的数据不一定是按发送的顺序接收,这样就可能造成数据包的丢失

Node中的dgram模块:用于实现基于UDP协议的连接。

//导入模块
const udp = require('dgram');

drgrm.Socket类

提供了实现UDP协议的基本框架。

常用事件:

  • listening:用于监听数据报信息
  • message:接收新数据报时触发

常用方法:

  • bind():绑定指定的地址和端口号(监听)
  • send():发送数据报

Node实现HTTP协议

http协议超文本传输控制协议,是通用的、无状态的、与传输数据无关的协议(工作在应用层)。

服务器与客户端交互的过程:

  • 客户端与服务器建立TCP连接(HTTP协议是基于TCP协议实现的)
  • 客户端向服务器发送请求信息
  • 服务器向客户端返回响应信息
  • 关闭http连接

Node实现http的过程

导入http模块

  const http = require('http');

创建服务端:http.Server类(提供了实现http服务器的基本框架)

主要事件:

  • request:当有请求发生时触发该事件。该事件被触发后,其对应的回调函数有request和response两个参数
  • connect:客户端发出http请求时触发

主要方法:

  • createServer:创建http服务
  • listen:启动http服务监听

http.IncomingMessage类

该类的对象是请求对象,用于客户端向服务器端发送请求信息,该类是由http.Server类或http.ClientRequest类创建。

http.ServerResponse类

该类的对象是响应对象,用于服务器向客户端发送响应信息。

GET请求和POST请求的区别

get请求:

  • 将请求参数包含在url中,例如:http://localhost:8080/index?age=12
  • 请求参数会被保存在浏览器的历史记录中,只能通过url进行编码
  • 参数的数据类型,只接收ASCII字符
  • 不安全,不能用来传递敏感信息

post请求:

  • 将请求参数包含在request body中
  • 不会保留在浏览器的历史记录中
  • 支持多种编码格式
  • 对参数的数据类型没有限制
  • 更安全,适合传递敏感信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值