面试题答案
一键面试在Node.js中创建一个简单的TCP服务器并实现相关功能,可以按照以下步骤:
- 引入
net
模块:Node.js内置的net
模块用于创建TCP服务器和客户端。
const net = require('net');
- 创建TCP服务器:使用
net.createServer()
方法创建服务器实例,并传入一个回调函数,该回调函数在每次有新连接时被调用。
const server = net.createServer((socket) => {
// 处理新连接
console.log('新客户端连接');
// 监听客户端发送的消息
socket.on('data', (data) => {
console.log('收到消息:', data.toString());
// 向客户端发送消息
socket.write('服务器已收到你的消息');
});
// 处理连接断开
socket.on('end', () => {
console.log('客户端断开连接');
});
});
- 监听特定端口:使用
server.listen()
方法让服务器监听指定端口。
const port = 3000;
server.listen(port, () => {
console.log(`服务器正在监听端口 ${port}`);
});
- 处理错误情况:可以为服务器实例添加
'error'
事件监听器来处理错误。
server.on('error', (err) => {
console.error('服务器错误:', err.message);
// 如果是端口被占用等错误,可以在这里进行处理,比如尝试其他端口
});
完整代码如下:
const net = require('net');
const server = net.createServer((socket) => {
console.log('新客户端连接');
socket.on('data', (data) => {
console.log('收到消息:', data.toString());
socket.write('服务器已收到你的消息');
});
socket.on('end', () => {
console.log('客户端断开连接');
});
});
const port = 3000;
server.listen(port, () => {
console.log(`服务器正在监听端口 ${port}`);
});
server.on('error', (err) => {
console.error('服务器错误:', err.message);
});
总结:
- 创建服务器:通过
net.createServer()
创建,传入处理新连接的回调。 - 监听端口:使用
server.listen()
方法。 - 消息收发:在连接回调中通过
socket.on('data', ...)
监听消息,使用socket.write()
发送消息。 - 连接断开:通过
socket.on('end', ...)
处理。 - 错误处理:为服务器实例添加
'error'
事件监听器。