📜  Node 中的服务器、流和套接字(1)

📅  最后修改于: 2023-12-03 15:03:11.969000             🧑  作者: Mango

Node 中的服务器、流和套接字

Node.js 是一个开放源代码、跨平台的 Javascript 运行环境,可用于服务器端和网络应用程序的开发。Node.js 中的服务器、流和套接字是其中重要的三个概念,下面我们详细介绍它们。

服务器

在 Node.js 中创建 HTTP 服务器非常容易,只需要使用内置的 http 模块即可。以下是一个简单的例子:

const http = require('http');

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

上述代码创建了一个简单的 HTTP 服务器,监听本地 3000 端口,并在接收到请求时返回一段文本。使用 node index.js 启动该服务器后,可以在浏览器中访问 http://localhost:3000/,即可看到返回的文本。

Node.js 中的流是一种处理流式数据的抽象接口,使用流可以更高效地处理大型数据集。Node.js 内置了多种流类型,包括可读流、可写流、转换流等。

以下是一个将文件中的数据通过可读流读入,并通过可写流写入另一个文件的例子:

const fs = require('fs');

const readStream = fs.createReadStream('input.txt'); // 创建可读流
const writeStream = fs.createWriteStream('output.txt'); // 创建可写流

readStream.on('data', (chunk) => { // 监听 'data' 事件
  writeStream.write(chunk); // 将数据通过可写流写入文件
});

readStream.on('end', () => { // 监听 'end' 事件
  writeStream.end(); // 关闭可写流
});

上述代码使用 fs 模块中的 createReadStreamcreateWriteStream 分别创建一个可读流和一个可写流,然后通过监听它们的 dataend 事件实现将文件数据从一个文件读入并写入另一个文件。

套接字

套接字是基于网络协议栈提供的接口,用于进程间的通信。Node.js 中的套接字被封装为一个叫做 net.Socket 的类,我们可以使用它来创建 TCP 客户端和服务器。

以下是一个简单的 TCP 服务器例子:

const net = require('net');

const server = net.createServer((socket) => { // 创建 TCP 服务器
  socket.on('data', (data) => { // 监听 'data' 事件
    socket.write(`You said "${data}"`); // 将数据通过客户端套接字返回
  });
});

server.listen(8080, () => {
  console.log('TCP server listening on port 8080');
});

上述代码创建了一个 TCP 服务器,当客户端连接后,服务器会监听客户端套接字的 data 事件,并将客户端发送的数据返回。

使用 Node.js 中的服务器、流和套接字,可以方便地实现各种网络应用程序。