Flutter无线文件传送app

本文详细介绍了如何在Flutter中实现客户端和服务器的交互。客户端部分包括连接、获取文件列表、序列化JSON和断开连接的步骤。服务器端涉及监听连接、处理请求和停止服务的逻辑。此外,还定义了一个抽象的ServerStatusCallBack类用于回调功能。整个程序目前适用于局域网环境,客户端和服务器都可通过命令行运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文,我们将实现此Flutter应用程序的“客户端-服务器”部分。

工作模式
设备可以同时以这两种模式之一运行。

接收
发送
在第一种情况下,设备的行为类似于客户端,而在后一种情况下,它将仅仅是服务器。

在接收模式下,第一个客户端获取一个文件列表,这些文件准备由服务器共享。

然后,遍历该文件列表并逐个获取它们,而服务器则继续侦听传入的请求并为它们提供服务(如果来自允许的对方)。

首先,让我们编写一些代码以使我们的设备像客户端一样工作。

接收端
以下import语句将为我们获取所需的Dart类。

名为Client的类将包含所有Client功能,将在接收模式下显示。

现在,在我们的Client类中添加一个名为connect的方法。

在对客户端建模时,首先要获取可供服务器共享的文件列表,我们需要在客户端类中使用名为fetchFileNames的方法。

关闭从先前的connect方法收到的HttpClientRequest对象,为我们提供了HttpClientResponse对象,该对象用于读取Server的响应。

现在,我们需要定义另一个方法serializeJSON,这将帮助我们将JSON响应转换为Map <String,List >。

让我们从服务器获取这些文件。在Client类中添加一个新的方法fetchFile。

如果正确提取了文件,则方法返回true,否则返回false

最后一个方法名为disconnect,用于关闭HttpClient连接。

我们已经完成了声明客户端。

发送端
返回服务器。首先定义一个名为Server的类。

为了控制Server,我们需要在此类中声明另一个变量。

让我们开始侦听传入的连接。

为了处理传入连接,请在我们的Server类中添加一个名为handleRequest的方法。

在isPeerAllowed中检查是否可以授予对等方访问权限。

使用handleGETRequest处理过滤的GET请求。

最后但并非最不重要的是,一种停止服务器的方法。

这就是服务器端。

现在定义一个抽象类ServerStatusCallBack,以促进回调功能。需要从我们计划启动,控制和停止Server的位置实现此抽象类。

现在可以运行客户端了。

当前,我将仅通过命令行应用程序运行客户端。

对于Server,暂时也将使其保持命令行可执行性。

首先定义一个ServerDriver类,该类实现ServerStatusCallBack,获取服务器状态更新。

最后main()函数创建ServerDriver的一个实例,启动服务器。

注意,此客户端服务器程序目前是在局域网(LAN)中工作。

完整代码

详情参阅 - 亚图跨际

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值