一、Nodejs核心模块之net的使用详解
1. net模块的概述
net
模块是Node.js
中用于直接处理TCP(传输控制协议)和IPC(进程间通信)的抽象层,提供了稳定的异步网络编程接口,可以快速构建各种网络应用。
2. net模块的常用方法
net模块提供诸如 net.createServer()、net.connect()、 net.Socket 和 net.Server 等常用方法,其中比较常见的是net.createServer()
方法,用于创建一个TCP服务器实例。
以下是一个简单的示例,展示如何使用net
模块创建一个tcp服务器,并监听客户端的请求:
const net = require('net');
// 创建TCP服务器实例
const server = net.createServer((socket) => {
// 新的TCP连接建立,执行以下操作
socket.on('data', (data) => {
console.log(data.toString());
socket.write('Server received:' + data);
});
socket.on('error', (err) => {
console.log(err);
});
});
// 监听8000端口,等待客户端连接
server.listen(8000, () => {
console.log('server is listening on port 8000');
});
3. 示例:使用net模块创建HTTP服务器
实际上,Node.js中的http
模块原理上就是在net模块上的基础上进行了封装,如果要使用net
模块创建HTTP服务器也是完全可行的。
下面的示例展示了如何使用net模块创建一个HTTP服务器,并监听客户端的请求:
const net = require('net');
const port = 8080;
const server = net.createServer((socket) => {
socket.once('data', (buf) => {
// 监听客户端发来的第一段HTTP请求报文
const data = buf.toString();
console.log(`Request: ${data.split('\n')[0]}`);
// 构建HTTP响应报文
const html = `
<html>
<head>
<meta charset="utf-8">
<title>hello</title>
</head>
<body>
<p>hello world!</p>
</body>
</html>
`;
const response = `HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Content-Length: ${Buffer.byteLength(html)}
${html}`;
// 返回HTTP响应报文给客户端
socket.end(response);
});
});
server.listen(port, () => {
console.log(`Server is running at http://127.0.0.1:${port}`);
});
二、Nodejs核心模块之http的使用详解
1. http模块的概述
http
模块是Node.js
中提供的核心模块之一,它封装了TCP/IP
通信协议,提供了Node.js中用于构建HTTP服务器和客户端的API。
2. http模块的常用API
http模块提供了一些常用的API,例如http.createServer()
和http.request()
等,其中最常见和最重要的API之一是http.createServer()
,用于创建一个HTTP服务器实例。
以下是一个简单的示例,展示如何使用http
模块创建一个HTTP服务器,并监听客户端的请求:
const http = require('http');
// 创建HTTP服务器实例
const server = http.createServer((req, res) => {
// 处理客户端的请求
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write('<h1>Hello Node.js!</h1>');
res.end();
});
// 监听8000端口,等待客户端连接
server.listen(8000, () => {
console.log('server is listening on port 8000');
});
3. 示例:使用http发送GET请求
以下是一个使用http.request()
方法向百度发出GET请求的示例:
const http = require('http');
const options = {
hostname: 'www.baidu.com',
port: 80,
path: '/',
method: 'GET'
};
const req = http.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`);
res.on('data', (data) => {
console.log(data.toString());
});
});
req.on('error', (error) => {
console.error(error);
});
req.end();
以上是关于Nodejs核心模块之net和http的使用详解
的完整攻略,其中包含了两条具体的使用示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nodejs核心模块之net和http的使用详解 - Python技术站