Skip to content

Commit e2a034c

Browse files
committed
update: --
1 parent 40287ef commit e2a034c

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

企业级/TCP.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,32 @@ TCP 提供超时重发,丢弃重复数据,检验数据,流量控制等功
1010

1111
TCP 是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。
1212

13+
socket 是双工流,因此它既可读也可写。
14+
15+
## net 模块
16+
17+
在Node.js中, net模块用于创建基于流的TCP 或 IPC的服务器与客户端。其中,在Windows上支持命名管道 IPC ,在其他操作系统上 支持 UNIX 域套接字。
18+
19+
net 模块的使用方法如下:
20+
21+
const net = require('net');
22+
23+
## 创建TCP服务器
24+
25+
close 事件:当服务器关闭的时候触发。
26+
27+
connection 事件:当一个新的 connection 建立的时候触发。
28+
29+
error 事件。当错误出现的时候触发。
30+
31+
listening 事件:当服务被绑定后调用 server.listen() 方法后触发。
32+
33+
## 发送和接收数据
34+
35+
## 创建Socket对象
36+
37+
```js
38+
server.on('connection', (socket) => {
39+
console.log('')
40+
})
41+
```
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const net = require('net');
2+
3+
const server = net.createServer((socket) => {
4+
socket.end('goodbye\n');
5+
}).on('error', (err) => {
6+
// 处理错误
7+
throw err;
8+
});
9+
10+
server.on('close', () => {
11+
console.log('服务器接收到close事件')
12+
})
13+
14+
server.on('connection', (socket) => {
15+
console.log('服务器接收 connection 事件')
16+
socket.setEncoding('utf8');
17+
socket.write('welcome');
18+
19+
socket.on('data', (data) => {
20+
console.log('服务器接收到的数据' + data);
21+
22+
// 如果收到c字符,就终止连接
23+
if (data == 'c') {
24+
socket.write('bye');
25+
socket.end(); // 关闭socket, 方法用于终止 Socket 对象 ; 主要用于关闭客户端
26+
server.close(); // 关闭服务器; 为了 😩 关闭服务器
27+
} else {
28+
socket.write(data);
29+
}
30+
})
31+
})
32+
33+
server.on('listening', () => {
34+
console.log('服务器接收到 listening 事件')
35+
})
36+
37+
// 随机获取未绑定的端口
38+
server.listen(8888, () => {
39+
console.log('服务器短裤, 占用短裤');
40+
})

0 commit comments

Comments
 (0)