下面是详细讲解“node.js使用net模块创建服务器和客户端示例【基于TCP协议】”的完整攻略:
一、net模块简介
Node.js中的net模块提供了基于TCP或IPC(进程间通信)协议的网络通信功能,包括创建服务器和客户端等功能。在这里主要介绍基于TCP协议的创建服务器和客户端。
二、创建TCP服务器
要创建一个TCP服务器,需要调用net模块的createServer方法,并传入一个回调函数来处理连接。回调函数的参数有两个,分别是表示连接的socket对象,和一个可选的表示连接来源的对象。以下是一个简单的TCP服务器的示例代码:
const net = require('net');
const server = net.createServer((socket) => {
// 接收到客户端连接请求时会执行这里的代码
console.log('客户端已连接');
// 处理连接
// ...
});
server.listen(8080, () => {
console.log('服务器已启动');
});
运行上述代码后,终端会显示“服务器已启动”,这时就可以通过其它客户端程序或命令行工具等去连接这个服务器。
三、连接TCP服务器
要连接一个TCP服务器,需要调用net模块的connect方法:
const net = require('net');
const client = net.connect({
host: '127.0.0.1', // 服务器IP地址
port: 8080 // 服务器端口号
}, () => {
console.log('已连接到服务器');
});
// 处理连接
// ...
这里的connect方法接收一个配置对象,包括服务器的IP地址和端口号等参数。接着可以对连接进行处理。
四、实现简单的聊天室
下面通过一个简单的聊天室示例来说明TCP服务器和客户端的使用。
1. 服务端代码
const net = require('net');
const clients = []; // 存储客户端socket对象的数组
const server = net.createServer((socket) => {
// 连接时添加socket到clients数组中,表示客户端已在线
clients.push(socket);
// 以客户端IP地址为昵称
const nickname = socket.remoteAddress;
console.log(`${nickname}进入聊天室`);
// 向所有客户端广播当前客户端的加入
clients.forEach((client) => {
if (client !== socket) {
client.write(`${nickname}进入聊天室\n`);
}
});
// 监听数据传输事件,以便处理聊天消息
socket.on('data', (data) => {
const message = `${nickname}: ${data}`;
console.log(message);
// 向聊天室中的所有客户端对象(除了自己)广播自己的消息
clients.forEach((client) => {
if (client !== socket) {
client.write(message);
}
});
});
// 连接断开时,将socket从clients数组中删除,向其它客户端广播离开消息
socket.on('close', () => {
clients.splice(clients.indexOf(socket), 1);
console.log(`${nickname}离开了聊天室`);
clients.forEach((client) => {
if (client !== socket) {
client.write(`${nickname}离开了聊天室\n`);
}
});
});
});
server.listen(8080, () => {
console.log('聊天室服务器已启动');
});
2. 客户端代码
const net = require('net');
const client = net.connect({
host: '127.0.0.1',
port: 8080
}, () => {
console.log('欢迎进入聊天室,请输入昵称:');
});
client.on('data', (data) => {
console.log(data.toString());
});
process.stdin.on('data', (data) => {
client.write(data);
});
3. 运行与测试
运行上述代码后,先运行一个聊天室服务器,再运行两个客户端程序进行测试。
其中一个客户端输入昵称后,即可进入聊天室。然后两个客户端就可以相互发送消息了,其它客户端会实时收到消息。
这就是一个基于TCP协议的简单聊天室的实现例子。
以上是关于node.js使用net模块创建服务器和客户端示例【基于TCP协议】的详细攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js使用net模块创建服务器和客户端示例【基于TCP协议】 - Python技术站