如何在 Node.js 中创建 TCP 服务器
在本文中,我们将了解如何在 Node.js 中创建一个简单的 TCP 服务器。TCP 是最常见的传输层协议之一。它提供了一种可靠的方式来以有序和错误检查的流发送数据包。TCP 是面向连接的,这意味着在发送数据之前,客户端和服务器之间必须建立连接。
安装 Node.js:
如果你还没有安装 Node.js,请从官方网站下载并安装。
创建项目:
为你的项目创建一个新文件夹并进入其中:
mkdir tcp-server
cd tcp-server
创建一个名为 server.js
的文件。
导入 net
模块。此模块不需要安装,因为它随 Node.js 一起提供。
const net = require('net');
调用 createServer
方法。它创建一个服务器对象。
const net = require('net');
const server = net.createServer();
为 createServer
方法添加一个 callback
。当 connection
事件被触发时调用此回调。此事件在与服务器建立新连接时发生。此事件返回一个我们命名为 socket
的对象。此 socket
对象是 net.Socket
的一个实例。
const net = require('net');
const server = net.createServer((socket) => {
console.log('客户端已连接');
});
我们可以使用 write
方法向套接字发送数据。我们传递一个我们选择的字符串,它被发送到客户端。
const net = require('net');
const server = net.createServer((socket) => {
console.log('客户端已连接');
socket.write('来自 TCP 服务器的问候!');
});
当从客户端接收到数据时,会触发 data
事件。
const net = require('net');
const server = net.createServer((socket) => {
console.log('客户端已连接');
socket.write('来自 TCP 服务器的问候!');
socket.on('data', (data) => {
console.log('收到:', data.toString());
});
});
当套接字完全关闭时,会发生 end
事件。这意味着通信已结束。
const net = require('net');
const server = net.createServer((socket) => {
console.log('客户端已连接');
socket.write('来自 TCP 服务器的问候!');
socket.on('data', (data) => {
console.log('收到:', data.toString());
});
socket.on('end', () => {
console.log('客户端已断开连接');
});
// 处理错误
socket.on('error', (err) => {
console.error('错误:', err.message);
});
});
设置服务器将监听的端口和地址。
const PORT = 3500;
const HOST = '0.0.0.0';
最后,要启动服务器,请使用 .listen()
方法。它需要端口号和地址。现在我们的服务器正在运行并等待新连接。
const net = require('net');
const server = net.createServer((socket) => {
console.log('客户端已连接');
socket.write('来自 TCP 服务器的问候!');
socket.on('data', (data) => {
console.log('来自客户端的消息:', data.toString());
});
socket.on('end', () => {
console.log('客户端已断开连接');
});
// 处理错误
socket.on('error', (err) => {
console.error('错误:', err.message);
});
});
const PORT = 3500;
const HOST = '0.0.0.0';
server.listen(PORT, HOST);
listen
方法还接受一个 callback
参数,当 listening
事件被触发时调用,指示服务器已开始监听传入连接。我们使用此事件来打印一条消息,让我们知道服务器已启动并正在运行。
server.listen(PORT, HOST, () => {
console.log(`服务器正在监听 ${HOST}:${PORT}`);
});
运行服务器:
使用以下命令启动服务器:
node server.js
你应该看到消息:
服务器正在监听 0.0.0.0:3500
连接到服务器:
要测试我们的 TCP 服务器,我们可以使用 telnet
命令。打开一个新终端并运行以下命令:
telnet 0.0.0.0 3500
你应该看到消息:
来自 TCP 服务器的问候!
或者,我们可以编写一个小文件 client.js
来测试我们的服务器。
const net = require("net");
const client = net.connect({ port: 3500 }, () => {
console.log("连接已建立");
client.write("来自客户端的问候");
});
client.on("data", (data) => {
console.log("来自服务器的消息:", data.toString());
});
client.on("end", () => {
console.log("已从服务器断开连接");
});
使用以下命令运行它:
node client.js
结论:
在本文中,我们在 Node.js 中创建了一个简单的 TCP 服务器,该服务器接受来自客户端的连接、处理数据并发送响应。这是一个可以根据你的需要扩展和改进的基本示例。你可以添加身份验证、数据存储、命令处理等。此示例的完整代码可在 GitHub Gist 上找到。
如果你有任何问题或建议,请随时通过社交媒体与我联系。编码愉快!