基于Nodejs的TCP通信
程序员文章站
2022-03-21 23:43:15
使用NodeJs实现TCP通信原理:服务端TCP监听来自客户端的连接请求,并使用TCP连接向客户端发送数据;客户端TCP连接到服务端并与服务器交互数据。客户端与服务端之间依靠套接字进行双向通信server.jsconst net = require('net');const HOST = '127.0.0.1';const PORT = 8080;//统计连接客户端的个数var count = 0;// 创建TCP服务器const server = new net.create...
使用NodeJs
实现TCP通信
原理:
服务端TCP监听来自客户端的连接请求,并使用TCP连接向客户端发送数据;
客户端TCP连接到服务端并与服务器交互数据。客户端与服务端之间依靠套接字进行双向通信
server.js
const net = require('net');
const HOST = '127.0.0.1';
const PORT = 8080;
//统计连接客户端的个数
var count = 0;
// 创建TCP服务器
const server = new net.createServer();
server.setEncoding = 'UTF-8';
//获得一个连接,该链接自动关联scoket对象
server.on('connection', sock => {
sock.name = ++count
console.log(`当前连接客户端数:${count}`);
// 为这个socket实例添加一个"data"事件处理函数
//客户端发送数据时触发data事件
//接收client发来的信息
sock.on('data', data => {
console.log(`客户端${sock.name}发来一个信息:${data}`);
// 回发该数据,客户端将收到来自服务端的数据
sock.write(`服务端收到了你发送的一条信息:${data}`);
});
//为socket添加error事件处理函数
sock.on('error', error => { //监听客户端异常
console.log('error' + error);
sock.end();
});
// 为这个socket实例添加一个"close"事件处理函数
//当对方的连接断开以后的事件
//服务器关闭时触发,如果存在连接,这个事件不会被触发,直到所有的连接关闭
sock.on('close', () => {
console.log(`客户端${sock.name}下线了`);
});
})
//listen函数开始监听指定端口
server.listen(PORT, HOST, () => {
console.log(`服务器已启动,运行在:http://${HOST}:${PORT}`);
});
client.js
const net = require('net');
const HOST = '127.0.0.1';
const PORT = 8080;
const client = new net.Socket();
client.setEncoding = 'UTF-8';
//与服务器进行连接
client.connect(PORT, HOST, () => {
console.log('已连接到: ' + HOST + ':' + PORT);
// 建立连接后向服务器发送数据,服务器将收到这些数据
client.write('我是client,我来自客户端!');
});
// 为客户端添加data事件处理函数
// data是服务器发回的数据
client.on('data', data => {
console.log(data.toString());
});
// 为客户端添加error事件处理函数
client.on('error', error => {
console.log('error' + error);
client.end();
});
// 为客户端添加close事件处理函数
client.on('close', () => {
console.log('服务器端下线了');
});
效果演示
-
先在终端输入
node server.js
启动服务器端 -
在打开一个终端输入
node client.js
启动客户端
此时server端显示
当再次打开另一个终端执行node client.js
时 -
关闭客户端
server端显示
本文地址:https://blog.csdn.net/weixin_43865551/article/details/109248982
上一篇: php培训速成班课程详细介绍
下一篇: 缺省参数和函数重载总结