IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> node.js学习---网络编程 -> 正文阅读

[网络协议]node.js学习---网络编程

搭建服务端

node提供了net,dgram,http,https四个模块,分别用来处理TCP,UPD,HTTP,HTTPS。相比于其他语言,可以很快的搭建起服务端!

1、TCP服务的搭建

1.1、简单的搭建

传输之前需要三次握手形成会话,会话形成后服务端和客户端才可以发送数据。在创建会话的过程中,服务端和客户端分别提供一个套接字,通过这个套接字实现两者之前连接的操作。一个简单的搭建实例,首先是服务端,监听connection进行连接!

//服务端搭建
var net = require('net')
var server = net.createServer()
server.on('connection', function(){
    //日志,有客户端连接
})
//监听端口
server.listen(8989)

通过Telnet工具可以对服务端进行简单的测试!

然后是客户端的连接简单示例!

var net = require('net')
var client = net.connect({port:8989}, function(){
//连接服务端
})
client.on('data', function () {

})

1.2、TCP服务的事件详解

服务端事件:

对于通过net.createServer()创建的服务器来说,他是一个EventEmitter实例,他有以下几个事件

事件????????????????说明
listenning????????????????将服务绑定在某个端口,通过server.listen()触发? ? ? ?
connection? ? ? ? ? ?每当有一个客户端进行连接的时候触发,可以进行日志记录等等
close服务器关闭的时候触发
error?服务器发生错误的时候触发,如果不对error进行监听,会将遇到的异常进行抛出

连接事件:

服务端和客户端进行连接之后会进行数据传输,这里有如下自定义事件:

事件????????????????说明
data? ? ? ?当客户端或者服务端调用write事件进行写入操作时,另外一端会触发data事件,进行数据接收之后的操作? ? ? ?
end? ? ? ?当连接的任意一端发送FIN(TCP四次握手断开连接),触发该事件? ? ??
connect当客户端与服务端进行连接时触发
drain当客户端或者服务端调用write且发送的数据大于(一次性发送的)大于限制值(16kb)时触发,为了处理流,通常使用pipe()
error异常发生时触发
close套接字完全关闭时触发
timeout一段时间没有活跃,比如没有发送心跳包时触发

需要注意的是,Node中发送小数据包的时候默认会使用Nagle算法,也就是会将多次的小数据合成大数据包发出。

使用pipe()实现管道操作,流操作可以有效的减少对内存的占用。

流的特点:

  1、边读? 边写,是边读边写的,读取一段文件,就将它写入

  2、流是基于事件的,所有的流对象都用 on绑定事件,并触发

2、UDP服务的搭建

2.1、简单的搭建

UDP套接字一旦创建,既可以作为客户端发送数据,也可以作为服务端接收数据!

var dgram = require('dgram')
var socket = dgram.createSocket('udp4')

2.2、创建服务端

?
var dgram = require('dgram')
var socket = dgram.createSocket('udp4')

?server.on('messagr', function(){
})
server.on('listenning', function(){
})
server.bind(端口)

2.3、创建客户端

?
var dgram = require('dgram')
var client= dgram.createSocket('udp4')
// msg为Buffer对象
client.send(msg,0,msg.length,端口,'ip',function() {

})
?

3、HTTP的实现

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-04 20:05:15  更:2021-07-04 20:05:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:38:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码