tcp层是http层的底层,更方便拿到请求者的响应头信息。html
响应头书写换行的时候, 注意本身的操做系统是什么。linux
服务器的config文件 server.confweb
port=8888
path=/web
path_position=relative
复制代码
配置文件的处理文件 config.jswindows
const fs = require('fs');
const globalConfig = {}
const conf = fs.readFileSync('./server.conf', { encoding: "utf-8" });
const confs = conf.split('\r\n');
for (var i = 0; i < confs.length; i++) {
var tempConf = confs[i].split('=');
if (tempConf.length < 2) {
continue;
} else {
globalConfig[tempConf[0]] = tempConf[1]
}
}
if (globalConfig.path_position == 'relative') {
globalConfig.basePath = __dirname + globalConfig.path
} else {
globalConfig.basePath = globalConfig.path
}
console.log(globalConfig);
module.exports = globalConfig;
复制代码
服务器文件 server.jsbash
const net = require('net');
const fs = require('fs');
const globalConfig = require('./config');
const url = require('url');
const server = net.createServer();
server.on('listening', () => {
console.log('服务器已启动')
})
server.on('connection', (socket) => {
socket.on('data', (data) => {
var requestUrl = data.toString().split("\r\n")[0].split(' ')[1];
try {
var dataFile = fs.readFileSync(globalConfig.basePath + requestUrl);
socket.write(`HTTP 200OK\r\n\r\n`);
socket.write(dataFile)
} catch{
socket.write(`HTTP 200OK\r\n\r\n<html><body>404</body></html>`)
}
socket.end()
})
})
server.listen(globalConfig.port, '127.0.0.1');
复制代码