Tit*_*man 2 javascript udp file stream node.js
我正在尝试创建一个简单的Node.js服务器,通过UDP从客户端接收文件.我遇到的问题是每次我尝试传输一个大文件(任何超过100kb)时,服务器似乎都没有响应.到目前为止,我已成功传输高达50kb的文件.
有什么方法可以解决这个问题吗?
客户代码:
var PORT = 33333;
var HOST = 'localhost';
var dgram = require('dgram');
var log = require('sys').log;
var client = dgram.createSocket('udp4');
var fs = require("fs");
fs.readFile('C:\\test.pdf', function (err,data) {
if (err) {
return console.log(err);
}
client.send(data, 0, data.length, PORT, HOST, function(err, bytes) {
if (err)
throw err;
log('UDP file sent to ' + HOST +':'+ PORT);
log('File sise: ' + data.length);
});
});
Run Code Online (Sandbox Code Playgroud)
服务器代码:
var PORT = 33333;
var HOST = 'localhost';
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
var fs = require("fs");
var log = require('sys').log;
var wstream = fs.createWriteStream('test.pdf');
wstream.on('finish', function () {
console.log('file has been written');
});
server.on('message', function (message, remote) {
wstream.write(message);
wstream.end();
});
server.bind(PORT, HOST);
Run Code Online (Sandbox Code Playgroud)
来自dgram文档:
有效载荷长度字段是16位宽,这意味着正常有效载荷不能大于64K八位字节,包括互联网标题和数据(65,507字节= 65,535 - 8字节UDP标头 - 20字节IP标头); 这对于环回接口通常是正确的,但是对于大多数主机和网络而言,这种长数据报是不切实际的.
您不能发送超过65,507字节的数据报.这是UDP的硬限制.听起来你应该为这些文件使用更高级别的协议.
| 归档时间: |
|
| 查看次数: |
1792 次 |
| 最近记录: |