当前位置:首页 > 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实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…