socket请求服务器接收文件
时间: 2023-07-31 12:13:30 浏览: 46
在 Node.js 中,可以使用 `net` 模块创建 TCP 服务器和客户端,通过 TCP 协议进行文件传输。
以下是一个简单的示例代码:
服务器端:
```javascript
const net = require('net')
const fs = require('fs')
const server = net.createServer((socket) => {
console.log('client connected')
// 监听客户端发送的文件数据
socket.on('data', (data) => {
console.log(`received data: ${data.length} bytes`)
// 将文件数据写入到磁盘
const writeStream = fs.createWriteStream('output.txt', { flags: 'a' })
writeStream.write(data, () => {
console.log(`write ${data.length} bytes to file`)
})
})
socket.on('end', () => {
console.log('client disconnected')
})
})
server.listen(3000, () => {
console.log('server started')
})
```
在上面的示例中,我们创建了一个 TCP 服务器,并在每个新建的 socket 连接上监听客户端发送的文件数据。当接收到数据时,我们将数据写入到名为 `output.txt` 的文件中。
客户端:
```javascript
const net = require('net')
const fs = require('fs')
// 读取要发送的文件数据
const fileData = fs.readFileSync('input.txt')
const client = new net.Socket()
client.connect(3000, () => {
console.log('connected to server')
// 发送文件数据
client.write(fileData)
// 关闭连接
client.end()
})
client.on('close', () => {
console.log('connection closed')
})
```
在上面的示例中,我们创建了一个 TCP 客户端,并在连接成功后将名为 `input.txt` 的文件数据发送到服务器端。发送完成后,我们关闭连接。
需要注意的是,在实际应用中,需要对文件进行分块传输,并在每个数据块传输完成后进行确认和校验,以确保数据的完整性和可靠性。另外,对于大文件的传输,还需要考虑流量控制和性能优化等问题。