下面是关于基于node的TCP客户端和服务端的简单通信的攻略:
一、 学习TCP网络协议和socket
在学习TCP客户端和服务端通信前,需要先了解TCP网络协议和socket编程。TCP/IP(Transmission Control Protocol/Internet Protocol)网络协议是Internet网络的基础协议,它规定了网络通信中数据的传输格式、如何开始和结束通信以及错误处理等诸多内容。而socket则是在网络通信中实现数据传输的一种API。
二、 创建TCP服务端
在node.js中创建TCP服务端的方法很简单,只需要使用net模块中的createServer方法即可。代码示例如下:
const net = require('net');
const server = net.createServer(socket => {
console.log('客户端已连接');
socket.write('欢迎连接到TCP服务端');
socket.on('data', data => {
console.log('接收到客户端数据', data.toString());
});
socket.on('close', () => {
console.log('客户端已断开连接');
});
}).listen(8080, () => {
console.log('TCP服务端已开启,监听端口8080');
});
以上代码定义了一个TCP服务端,启动服务器后会监听8080端口。当有客户端连接时,会输出“客户端已连接”,然后向客户端发送一条欢迎消息。当接收到客户端发送的数据时,会输出“接收到客户端数据”并显示客户端发送的数据内容。当客户端断开连接时,会输出“客户端已断开连接”。
三、 创建TCP客户端
在node.js中创建TCP客户端的方法也很简单,只需要使用net模块中的connect方法即可。代码示例如下:
const net = require('net');
const client = net.connect({port: 8080}, () => {
console.log('已连接到TCP服务器');
client.write('hello TCP server');
});
client.on('data', data => {
console.log('接收到服务端数据', data.toString());
client.end();
});
client.on('end', () => {
console.log('已断开与TCP服务器的连接');
});
以上代码定义了一个TCP客户端,连接到本地8080端口的TCP服务端。当连接成功时,会输出“已连接到TCP服务器”,然后向服务端发送一条消息“hello TCP server”。当客户端接收到服务端发送的数据时,会输出“接收到服务端数据”并显示服务端发送的数据内容。当与服务端的连接断开时,会输出“已断开与TCP服务器的连接”。
四、 示例示范
接下来我们用实例进行示范。比如我们要用TCP协议完成一个简单的聊天室程序,建立一个开放的监听端口,用户可以通过连接到此端口,发送自己的信息并接收其他人发来的信息。
我们首先开启一个TCP服务端,代码如下:
const net = require('net');
const clients = [];
const server = net.createServer(socket => {
console.log('客户端已连接');
clients.push(socket);
socket.on('data', data => {
console.log('接收到客户端数据', data.toString());
broadcast(data, socket);
});
socket.on('end', () => {
clients.splice(clients.indexOf(socket), 1);
console.log('已断开与客户端的连接');
});
}).listen(8080, () => {
console.log('TCP服务端已开启,监听端口8080');
});
function broadcast(message, sender) {
for (let i = 0; i < clients.length; i++) {
if (clients[i] !== sender) {
clients[i].write(message);
}
}
}
以上代码定义了一个TCP服务端,启动服务端后会监听8080端口。当有客户端连接时,会输出“客户端已连接”,并将此客户端添加到客户端列表clients中。当接收到客户端发送的数据时,会输出“接收到客户端数据”并转发给其他客户端(使用broadcast函数)。当与客户端的连接断开时,会将此客户端从clients列表中删除,然后输出“已断开与客户端的连接”。
然后我们开启一个TCP客户端,代码如下:
const net = require('net');
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const client = net.connect({port: 8080}, () => {
console.log('已连接到TCP服务器');
rl.setPrompt('> ');
rl.prompt();
});
client.on('data', data => {
console.log(data.toString());
rl.prompt();
});
rl.on('line', line => {
client.write(line);
rl.prompt();
});
client.on('end', () => {
console.log('已断开与TCP服务器的连接');
process.exit(0);
});
以上代码定义了一个TCP客户端,连接到本地8080端口的TCP服务端。当连接成功时,会输出“已连接到TCP服务器”,然后进入命令行模式。当接收到服务器发送的数据时,会显示接收到的数据,并重新进入命令行模式。当用户在命令行中输入一行内容时,会将此内容发送给服务器。当与服务器的连接断开时,会输出“已断开与TCP服务器的连接”并退出程序。
启动一个以上代码实例后,客户端和服务端即可相互通信,完成一个简单的聊天室程序。
以上就是关于基于node的TCP客户端和服务端的简单通信的攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于node的tcp客户端和服务端的简单通信 - Python技术站