Node.js创建TCP服务器

Node.js提供了net模块,用于创建基于TCP的网络服务器和客户端,以下是一个简单的示例,演示如何使用Node.js创建一个TCP服务器:
步骤1: 导入net模块
我们需要导入Node.js的net模块。
const net = require('net');
步骤2: 创建TCP服务器
我们将使用net.createServer()方法创建一个TCP服务器,这个方法接受一个回调函数作为参数,该回调函数将在每次有新的客户端连接时被调用。
const server = net.createServer((socket) => {
// 处理客户端连接的逻辑
});
步骤3: 监听端口

我们需要让服务器监听特定的端口,可以使用listen()方法来实现这一点。
const port = 8080; // 你可以选择任何可用的端口号
server.listen(port, () => {
console.log(Server is listening on port ${port});
});
步骤4: 处理客户端连接
当客户端连接到服务器时,回调函数将被触发,在这个例子中,我们只是简单地打印一条消息来确认连接,你可以根据需要添加更多的逻辑来处理客户端发送的数据或关闭连接。
server.on('connection', (socket) => {
console.log('New client connected');
// 接收客户端数据
socket.on('data', (data) => {
console.log(Received data from client: ${data});
});
// 客户端断开连接
socket.on('end', () => {
console.log('Client disconnected');
});
});
单元表格
| 步骤 | 描述 |
| 1 | 导入net模块 |
| 2 | 创建TCP服务器 |
| 3 | 监听端口 |
| 4 | 处理客户端连接 |
相关问题与解答
问题1: 如何修改上述代码以使服务器能够同时处理多个客户端连接?

答案1: Node.js的net模块是事件驱动的,它内部使用了异步I/O操作,因此它可以同时处理多个客户端连接,在上述代码中,每当有一个新的客户端连接时,都会调用提供的回调函数,并且每个连接都有自己的套接字对象,这意味着你可以在回调函数中为每个连接执行不同的操作,而不会相互干扰,实际上,上述代码已经可以处理多个客户端连接了。
问题2: 如果我想限制服务器只接受来自特定IP地址的连接,应该如何实现?
答案2: 你可以在服务器的回调函数中检查客户端的远程地址(即IP地址),并根据需要决定是否接受连接,你可以这样做:
const allowedIPs = ['192.168.1.10']; // 允许的IP地址列表
server.on('connection', (socket) => {
const remoteAddress = socket.remoteAddress;
if (allowedIPs.includes(remoteAddress)) {
console.log(Accepted connection from ${remoteAddress});
// 处理客户端连接的逻辑...
} else {
console.log(Rejected connection from ${remoteAddress});
socket.end(); // 结束连接
}
});
这样,只有来自allowedIPs列表中的IP地址的客户端才能成功连接到服务器,其他尝试连接的客户端将收到一个结束信号并被拒绝。