基于 node 使用 UDP 上传文件示例
在Node.js中,您可以使用dgram模块来实现UDP上传文件的功能。以下是一个基本的示例,展示了如何使用UDP协议发送一个文件:
const dgram = require('dgram');
const fs = require('fs');
const path = require('path');
// 创建 UDP 套接字
const socket = dgram.createSocket('udp4');
// 要发送的文件路径
const filePath = path.join(__dirname, 'example.txt');
// 读取文件并发送
fs.readFile(filePath, (err, data) => {
if (err) throw err;
// 将文件数据转换为 Buffer
const buffer = Buffer.from(data);
// 目的地地址和端口
const host = '127.0.0.1';
const port = 9999;
// 发送数据
socket.send(buffer, port, host, (err) => {
if (err) throw err;
console.log(`文件已通过 UDP 发送到 ${host}:${port}`);
socket.close(); // 关闭套接字
});
});
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
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
在接收端,您需要创建另一个UDP套接字来监听发送的文件数据,并将其保存到文件中:
const dgram = require('dgram');
const fs = require('fs');
const path = require('path');
// 创建 UDP 套接字
const socket = dgram.createSocket('udp4');
// 要保存的文件路径
const savePath = path.join(__dirname, 'received.txt');
// 监听端口
const port = 9999;
socket.bind(port, () => {
console.log(`监听 UDP 端口: ${port}`);
});
// 接收数据
socket.on('message', (message, remote) => {
console.log(`从 ${remote.address}:${remote.port} 接收到 UDP 数据`);
// 将 Buffer 数据写入文件
fs.writeFile(savePath, message, (err) => {
if (err) throw err;
console.log('文件接收完成');
});
});
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
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
请确保在实际环境中处理错误和边界情况,并且适当配置防火墙和端口转发,因为UDP包可能会在网络中丢失。
上次更新: 2024/04/07, 16:22:38
- 02
- Node与GLIBC_2.27不兼容解决方案08-19
- 03
- Git清空本地文件跟踪缓存08-13