socks 专栏 —— 3. 认识 TCP

·  阅读 53

3. 认识 TCP

作为前端,对 HTTP 应该是比较熟悉的。无论是使用 axios 发 ajax 请求与服务端交互,还是使用 expresskoa 搭建一个 HTTP 服务器,都是和 HTTP 打交道。

而 TCP 相对来说熟悉程度就低一些了。本文会简单介绍一下如何使用 node 搭建一个 TCP 服务器和 TCP 客户端。

服务端

// server.js
const net = require('net');
​
const server = net.createServer((socket) => {
  socket.on('data', (data) => {
    console.log('data from client:', data);
    socket.write('Hello from server.');
  });
});
​
server.listen(4001);
复制代码

客户端

// client.js
const net = require('net');
​
const socket = net.connect(4001, '127.0.0.1', () => {
  socket.write('Hello from client');
});
​
socket.on('data', (data) => {
  console.log('data from server:', data);
});
复制代码

如图所示,net 模块的 createServer 方法创建的其实是一个 TCP 服务器。TCP 的服务端和客户端之间的通信使用的是一对 socket。socket 是一个 Duplex,可读可写的 stream。这里不对 stream 做过多介绍,只需要知道:

  • socketA.write(data1),那么就会触发 socketB 的 data 事件,并且参数为 data1

先运行 node server.js,然后运行 node client.js,结果如下:

tcp-demo

根据上一节对 Buffer 的介绍,我们知道 server 收到了来自 client 的消息:Hello from client,然后发了一条 Hello from server. 给 client。这也是 TCP 传输数据的方式。

分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改