当前位置:首页 > JavaScript

js实现tcp

2026-02-01 11:55:34JavaScript

使用Node.js实现TCP通信

Node.js内置的net模块提供了TCP通信的基础功能,可以创建TCP服务器和客户端。

创建TCP服务器

const net = require('net');

const server = net.createServer((socket) => {
    console.log('客户端已连接');

    socket.on('data', (data) => {
        console.log(`收到数据: ${data}`);
        socket.write(`服务器已收到: ${data}`);
    });

    socket.on('end', () => {
        console.log('客户端已断开连接');
    });
});

server.listen(8080, () => {
    console.log('服务器正在监听8080端口');
});

创建TCP客户端

const net = require('net');

const client = net.connect({port: 8080}, () => {
    console.log('已连接到服务器');
    client.write('Hello Server!');
});

client.on('data', (data) => {
    console.log(`收到服务器数据: ${data}`);
    client.end();
});

client.on('end', () => {
    console.log('已断开与服务器的连接');
});

处理错误事件

TCP通信中需要处理可能的错误:

js实现tcp

socket.on('error', (err) => {
    console.error('连接错误:', err);
});

server.on('error', (err) => {
    console.error('服务器错误:', err);
});

自定义协议实现

对于复杂应用,通常需要自定义协议:

js实现tcp

// 使用分隔符处理消息边界
const DELIMITER = '\n';

socket.on('data', (data) => {
    const messages = data.toString().split(DELIMITER);
    messages.forEach(msg => {
        if(msg) console.log(`收到消息: ${msg}`);
    });
});

// 发送消息时添加分隔符
socket.write(`自定义消息${DELIMITER}`);

保持连接活跃

可以设置keepalive选项防止连接超时:

const server = net.createServer({
    keepalive: true,
    keepaliveInitialDelay: 10000
}, (socket) => {
    // 处理逻辑
});

性能优化建议

对于高并发场景,考虑使用连接池和负载均衡。Node.js的集群模块可以帮助利用多核CPU:

const cluster = require('cluster');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
    for (let i = 0; i < numCPUs; i++) {
        cluster.fork();
    }
} else {
    // 创建TCP服务器
}

标签: jstcp
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…