nodejs中net传输文件
时间: 2024-02-19 09:03:23 浏览: 24
在 Node.js 中,可以使用 `net` 模块来进行网络通信,包括传输文件。以下是一个简单的示例:
```javascript
const net = require('net');
const fs = require('fs');
// 创建一个服务器
const server = net.createServer((socket) => {
console.log('Client connected.');
// 接收文件名
socket.on('data', (data) => {
const filename = data.toString().trim();
console.log(`File name: ${filename}`);
// 读取文件并发送
fs.readFile(filename, (err, content) => {
if (err) {
console.error(err);
socket.write('Error occurred.');
} else {
socket.write(content);
}
// 关闭连接
socket.end();
});
});
});
// 启动服务器
const port = 3000;
server.listen(port, () => {
console.log(`Server listening on port ${port}...`);
});
```
在客户端,可以使用 `net` 模块中的 `connect` 方法来连接服务器,并发送文件名和接收文件内容:
```javascript
const net = require('net');
const fs = require('fs');
// 创建一个客户端
const client = net.connect({ port: 3000 }, () => {
console.log('Connected to server.');
// 发送文件名
const filename = 'example.txt';
client.write(filename);
// 接收文件内容
let data = Buffer.alloc(0);
client.on('data', (chunk) => {
data = Buffer.concat([data, chunk]);
});
// 接收完毕,保存文件
client.on('end', () => {
fs.writeFile(filename, data, (err) => {
if (err) {
console.error(err);
} else {
console.log('File saved successfully.');
}
});
});
});
```
以上示例中,客户端连接服务器后,发送文件名 `example.txt`,然后接收文件内容并保存到本地。服务器接收到文件名后,读取文件内容并发送给客户端,然后关闭连接。