Node网络编程
Posted 遥岑.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node网络编程相关的知识,希望对你有一定的参考价值。
目录
网络编程
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中
- 不会保留在浏览器的历史记录中
- 支持多种编码格式
- 对参数的数据类型没有限制
- 更安全,适合传递敏感信息
以上是关于Node网络编程的主要内容,如果未能解决你的问题,请参考以下文章
多种隐写基于matlab GUI LSB+DCT文本图片嵌入+提取含Matlab源码 1851期
多种隐写基于matlab GUI LSB+DCT文本图片嵌入+提取含Matlab源码 1851期
在 Gatsby-node.js 中检索多种数据类型时,graphql 重复文档错误