node 原理 - 网络服务 - TCP、UDP 服务

819 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

node 原理 - 网络服务中的TCP服务 - TCP 介绍

上一篇文章我们说到 node 可以非常方便的搭建网络服务器,node 的内置模板 net、dgram、http、https 分别对应处理 TCP、UDP、HTTP、HTTPS,并介绍了 TCP 的基本知识,这篇文章将看下如何用 node 搭建一个 TCP 服务

TCP 服务实践

const net = require('net');
const server = net.createServer((socket) => {
    socket.on('data', (data) => {
        socket.write('data hello');
    })
    socket.on('end', (data) => {
        socket.write('end');
    })
    socket.write('tcp hello');
})
server.listen(8082, () => {
    console.log('tcp server bound');
})
console.log("Hello World");

我们通过 net.createServer(listener) 创建了一个 TCP 服务器,listener 是连接事件 connection 的监听器,也可以使用下面的方式进行侦听

const net = require('net');
const server = net.createServer();
server.on('connection', function (socket) { 
    // 新的连接
}); 
server.listen(8082);

我们可以利用 Telnet 工具作为客户端对刚才创建的简单服务器进行会话交流

$ telnet 127.0.0.1 8082

UDP 服务

UDP 又叫用户数据包协议,和 TCP 同样处于传输层,TCP 和 UDP 最大的不同是 UDP 不是面向连接的。TCP 中所有的会话都是基于连接完成的,客户端如果要和另一个 TCP 服务通信,需要再创建一个套接字完成连接。但是 UDP 中,一个套接字可以和多个 UDP 服务通信。

UDP 是简单不可靠的连接服务,在网络环境差的时候可能会丢包比较严重,但是因为它不需要连接,资源消耗低,处理快速且灵活,所以可以用于音频、视频传输这种,丢一两个包也不会有重大影响的场景。

UDP 的应用很广泛,DNS 就是基于 UDP 实现的。

下一篇文章将会介绍 UDP 的实际应用,欢迎点赞和评论~