node.js实现tcp服务器和客户端

引入net模块

net 模块提供了异步的网络 API,用于创建基于流的 TCP 或 IPC 服务器 (net.createServer()) 和客户端 (net.createConnection())。

1
let net = require('net');

服务端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
let net = require('net');
let server = net.createServer(socket => {
socket.on('data', data =>{
console.log('server recv data:', data);
})
socket.on('close', function(hadError) {
console.log(`sock close hadError: "${hadError}"`);
})
socket.on('end', function() {
console.log('sock end');
})
socket.on('error', function(err) {
console.log('sock err:', err);
})
// 设置最大连接数
server.maxConnections = 100;
// 获取连接数
server.getConnections((err, count) => {
console.log('server count:', count);
})
});

server.listen(10033, () => {
console.log("server is running on 10033");
})
server.on('error', function(err) {
console.log("server err:", err);
})
server.on('close', () => {
console.log("server closed")
})

客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let net = require('net');
let client = net.Socket();
const host = '127.0.0.1';
client.connect(10033, host, () => {
console.log('connect the server');
client.write('send first data');
});

client.on('data', data => {
console.log('client data:', data);
})

client.on('end', () => {
console.log('client end');
})

client.on('error', (err) => {
console.log(`client error: ${err}`);
});