当前位置:首页 > JavaScript

js 实现 tcp

2026-02-01 04:39:39JavaScript

TCP 通信的 JavaScript 实现方法

在 JavaScript 中实现 TCP 通信通常需要使用 Node.js 环境,因为浏览器端的 JavaScript 受安全限制无法直接建立 TCP 连接。以下是几种实现方式:

使用 Node.js 的 net 模块

Node.js 内置的 net 模块可以创建 TCP 服务器和客户端。

TCP 服务器示例代码

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

  socket.on('data', (data) => {
    console.log(`收到数据: ${data}`);
    socket.write(`ECHO: ${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('已断开与服务器的连接');
});

使用 WebSocket 作为替代方案

如果需要在浏览器环境中实现类 TCP 的双向通信,WebSocket 是最接近的替代方案。

js 实现 tcp

浏览器端 WebSocket 示例

const socket = new WebSocket('ws://example.com/socket');

socket.onopen = () => {
  socket.send('Hello Server!');
};

socket.onmessage = (event) => {
  console.log(`收到消息: ${event.data}`);
};

使用 Socket.io 库

Socket.io 提供了更高级的抽象,支持自动重连和多种传输方式。

服务器端

js 实现 tcp

const io = require('socket.io')(3000);

io.on('connection', (socket) => {
  console.log('新客户端连接');

  socket.on('message', (data) => {
    console.log(`收到: ${data}`);
    socket.emit('reply', `ECHO: ${data}`);
  });
});

客户端

const socket = io('http://localhost:3000');

socket.emit('message', 'Hello!');

socket.on('reply', (data) => {
  console.log(`服务器回复: ${data}`);
});

使用 WebRTC 数据通道

对于点对点通信需求,WebRTC 的 DataChannel 可以提供类似 TCP 的可靠传输。

建立数据通道示例

const pc = new RTCPeerConnection();
const dc = pc.createDataChannel('channel');

dc.onmessage = (event) => {
  console.log(`收到: ${event.data}`);
};

dc.onopen = () => {
  dc.send('Hello Peer!');
};

注意事项

  • Node.js 的 net 模块仅适用于服务器端 TCP 通信
  • 浏览器环境必须使用 WebSocket 或 WebRTC 等高级协议
  • TCP 是面向流的协议,可能需要自定义消息边界处理
  • 生产环境应考虑添加错误处理和超时机制

标签: jstcp
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…