我创建了一个简单的颤振应用程序来提供我的电话目录(/ 的索引)以与 PC 共享我的文件。
(我使用 IDM(Internet 下载管理器)下载文件)它适用于小文件,但是当我将大文件下载到 PC 时,应用程序会自动关闭。(这里我尝试下载691MB文件)因为它创建了 8 个下载连接。
如何在此代码中为单个客户端设置最大连接限制?(例如通过最多 2 个连接下载文件)
(使用 HttpServer 和 VirtualDirectory 实现。)
import 'dart:io';
import 'package:http_server/http_server.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
HttpServer server;
startServer() async {
// Created VirtualDirectory Variable named staticFiles
VirtualDirectory staticFiles = VirtualDirectory('/storage/emulated/0')
..allowDirectoryListing = true
..jailRoot = false;
// Started the server
server = await HttpServer.bind(InternetAddress.anyIPv4, 7766);
// Serve the directory (Index of/)
server.listen((req) {
staticFiles.serveRequest(req);
});
}
stopServer() {
//Stop the Server
server.close();
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Center(
child: Text('Server Test'),
),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
RaisedButton(
child: Text('Start Server'),
onPressed: startServer,
),
RaisedButton(
child: Text('Stop Server'),
onPressed: stopServer,
),
],
),
);
}
}
安装的依赖项:
dependencies:
http_server: ^0.9.8+3
确保您启用了READ_EXTERNAL_STORAGE权限。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
应用程序在本地网络上工作
URL=> gatewayIP:7766(如果您从手机创建 wifi 热点并将其连接到 PC,则很可能是http://192.168.43.1:7766 )
请帮我解决这个问题。
ps:当我再次打开应用程序并单击startServer时,文件下载会恢复。
编辑:我使用 IDM(Internet 下载管理器)下载导致崩溃的文件,但是当我过去从浏览器下载文件时它工作正常。