课程代码
This commit is contained in:
122
nodejs/nodeExperiment1/server.js
Normal file
122
nodejs/nodeExperiment1/server.js
Normal file
@@ -0,0 +1,122 @@
|
||||
const os = require('os');
|
||||
const http = require('http');
|
||||
|
||||
// 获取系统信息
|
||||
const getSystemInfo = () => {
|
||||
try {
|
||||
const totalMem = (os.totalmem() / (1024 ** 3)).toFixed(2) + ' GB';
|
||||
const freeMem = (os.freemem() / (1024 ** 3)).toFixed(2) + ' GB';
|
||||
const usedMem = ((os.totalmem() - os.freemem()) / (1024 ** 3)).toFixed(2) + ' GB';
|
||||
const memUsage = (((os.totalmem() - os.freemem()) / os.totalmem()) * 100).toFixed(2) + '%';
|
||||
|
||||
const cpus = os.cpus();
|
||||
const cpuModel = cpus[0]?.model || 'Unknown';
|
||||
const cpuCores = cpus.length;
|
||||
|
||||
|
||||
return {
|
||||
hostname: os.hostname(),
|
||||
platform: os.platform(),
|
||||
arch: os.arch(),
|
||||
uptime: (os.uptime() / 3600).toFixed(2) + ' hours',
|
||||
|
||||
// 内存信息:使用前面计算好的变量
|
||||
totalMem, // 总内存大小
|
||||
usedMem, // 已使用内存
|
||||
freeMem, // 空闲内存
|
||||
memUsage, // 内存使用率
|
||||
// CPU信息:使用前面计算好的变量
|
||||
|
||||
cpuModel, // CPU型号
|
||||
cpuCores // CPU核心数
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('获取系统信息失败:', error.message);
|
||||
return {};
|
||||
}
|
||||
};
|
||||
|
||||
// 创建HTTP服务器
|
||||
const server = http.createServer((req, res) => {
|
||||
if (req.url === '/') {
|
||||
const systemInfo = getSystemInfo();
|
||||
const html = `
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>系统信息监控</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 40px;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
.container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
background: white;
|
||||
padding: 20px;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
||||
}
|
||||
h1 {
|
||||
color: #333;
|
||||
text-align: center;
|
||||
border-bottom: 2px solid #eee;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.info-item {
|
||||
margin: 15px 0;
|
||||
padding: 10px;
|
||||
background: #f9f9f9;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.label {
|
||||
font-weight: bold;
|
||||
color: #555;
|
||||
}
|
||||
.memory { border-left: 4px solid #4CAF50; }
|
||||
.cpu { border-left: 4px solid #2196F3; }
|
||||
.system { border-left: 4px solid #FF9800; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>🖥️ 系统信息监控</h1>
|
||||
|
||||
<div class="info-item system">
|
||||
<span class="label">主机名:</span> ${systemInfo.hostname || 'N/A'}<br>
|
||||
<span class="label">平台:</span> ${systemInfo.platform || 'N/A'}<br>
|
||||
<span class="label">架构:</span> ${systemInfo.arch || 'N/A'}<br>
|
||||
<span class="label">运行时间:</span> ${systemInfo.uptime || 'N/A'}
|
||||
</div>
|
||||
|
||||
<div class="info-item memory">
|
||||
<span class="label">总内存:</span> ${systemInfo.totalMem || 'N/A'}<br>
|
||||
<span class="label">已用内存:</span> ${systemInfo.usedMem || 'N/A'}<br>
|
||||
<span class="label">空闲内存:</span> ${systemInfo.freeMem || 'N/A'}<br>
|
||||
<span class="label">内存使用率:</span> ${systemInfo.memUsage || 'N/A'}
|
||||
</div>
|
||||
|
||||
<div class="info-item cpu">
|
||||
<span class="label">CPU型号:</span> ${systemInfo.cpuModel || 'N/A'}<br>
|
||||
<span class="label">CPU核心数:</span> ${systemInfo.cpuCores || 'N/A'}
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
`;
|
||||
|
||||
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
||||
res.end(html);
|
||||
} else {
|
||||
res.writeHead(404, { 'Content-Type': 'text/plain' });
|
||||
res.end('页面未找到');
|
||||
}
|
||||
});
|
||||
|
||||
// 启动服务器
|
||||
const PORT = 3000;
|
||||
server.listen(PORT, () => {
|
||||
console.log(`🚀 服务器运行在 http://localhost:${PORT}`);
|
||||
});
|
||||
Reference in New Issue
Block a user