Pi2(派兔)使用手册

摘要

Pi2(派兔)是基于Pisces2-m开发的Eclipse RCP的桌面端软件,通过Pi2可以更直观的操作局域网内两台电脑之间文件传输。

界面简介

主窗口

Mac派兔作为服务器

窗口打开(默认作为服务器运行)

服务器启动

客户端连接上

客户端停止

Win派兔作为客户端

打开客户端

客户端启动(因为之前运行过,在clientRoot里已经保存文件,所以提示)

按“OK”按钮,启动客户端,连接上Pi2 服务器

文件传输完成,关闭客户端(确认是否关闭)

客户端关闭

菜单栏(Mac和Win有差别)

Mac的Pi2菜单

Win的Pi2菜单(win 7)

工具栏

Mac和Win基本一样

状态栏

设置界面

Mac的Pi2设置界面

未运行的设置界面,可以编辑

正在运行的时候,设置界面,不可编辑

Win的Pi2设置界面

未运行的客户端设置界面,属于客户端的相关字段可以编辑(服务器的属性不可编辑)

运行时候的设置界面,不可编辑

使用说明

Pi2设计的目标是,在两台电脑间(局域网)传输文件,Pi2用同一个GUI,可以用作服务器,也可以用作客户端。Pi2的使用步骤如下:

步骤一、设置服务器

首先打开Pi2, 再打开设置界面,在“运行模式”设置项中,选择“服务器模式”。

服务器端口:服务器启动后监听的端口,客户端也需要连接到服务器的这个端口。

服务器主机:服务器运行的主机IP地址。

文件过滤器:服务器根路径中扫描的文件列表中,不包含的文件模式。

服务器根路径:服务器扫描的文件列表的根路径,扫描到的文件,将会传输给客户端。

步骤二、启动服务器

点击Pi2界面工具栏的启动按钮后(或从菜单启动),pi2 启动服务器按照以下顺序执行操作:

  1. 首先读取设置的服务器信息,端口,主机,文件过滤器,服务器根路径等。
  2. 然后,启动服务器,监听设置的端口。
  3. 服务器启动成功后,递归扫描根路径下的所有文件,根据设置的过滤规则,排除掉符合过滤规则的文件,在用户Home目录中生成 ~/.fli_server/fli.idx和 ~/.fli_server/fli.sp这两个元数据文件。
  4. 发通知事件出去,告诉全世界,服务器已经启动完成。
  5. 状态栏接收到服务器启动成功的事件通知后,更新UI状态(左下角)为在线状态。
  6. 将fli.idx和fli.sp文件的数据分别加载到界面的“文件列表”和“保存点状态”中。

步骤三、设置客户端

在客户端电脑打开Pi2,打开设置界面,如下图

运行模式:选择“客户端模式”

服务器端口:必须和服务器设置成一样的值。

服务器主机:必须和服务器设置成一样的值。

文件过滤器:可以设置成和服务器一样,也可以不一样,符合过滤规则的文件,客户端将不会请求服务器传输。(文件传输由客户端来发起请求来控制)

临时文件后缀:客户端用于接收到服务器发送过来的文件数据的临时文件的后缀名,默认是 .temp

覆盖存在的文件:如果,勾选,客户端请求的文件如果在客户端存在,将会覆盖。不勾选,怎会跳过文件写入操作。

客户端的数量:客户启动的实例数量,默认启动10个客户端线程,同时向服务器请求文件传输。

文件接收缓存:每个客户端实例的文件接收的缓存大小,文件达到缓存设置的大小或者文件数据传输完成后,就触发数据写磁盘。

客户端根路径:客户端用于保存接收文件的根路径,所有文件都相对保存与此根目录下。

步骤四、启动客户端

点击Pi2界面工具栏的启动按钮后(或从菜单启动),pi2 启动客户端,按照以下顺序执行操作:

  1. 读取最新的设置信息
  2. 根据设置界面设置的数量启动客户端实例
  3. 发送服务器启动完成事件(实际上客户端可能还在启动中, TODO:状态改成加载中,在meta数据文件创建成功后,再设置成在线状体)
  4. 状态栏收到客户启动完成事件后,更新状态为“在线”
  5. 一旦有某个客户端实例与服务器建立连接成功,更新“连接信息”界面的数据
  6. 更新连接状态为“已连接”
  7. 客户端连接上服务器后,会接着触发执行第一个请求(reqListInfo-即,请求即将要传输的文件列表,数据来源于服务器的~/.fli_server/fli.idx文件)
  8. 当客户端接收完服务器发送过来的fli.idx文件后,根据客户端的生成与服务器同名的fli.idx文件,然后计算客户端的fli.idx文件的指纹(md5),并比较服务器传输过来的服务器的fli.idx的文件指纹是否一样,以确定文件传输是否有数据丢失。
  9. 根据客户端的fli.idx生成fli.sp 元数据文件。
  10. 通知全世界,元数据文件创建成功。
  11. “保存点状态”和“文件列表”界面收到元数据文件创建成功后,开始读取fli.idx和fli.sp文件数据,加载到对应的界面中。
  12. 从客户端发起第一个请求MsgUtil.firstReqListInfo(ctx)开始,后续的文件传输请求,接收都自动按照客户端的fli.idx的文件顺序逐个完成(多个客户端实例去执行)。

当在日志界面中看到如下消息的时候,代表所有文件已经传输完成。

<*>end of fli.idx file, all file process.<*>

传输完成后,就可以停止和关闭客户端和服务器了。

步骤五、停止客户端

步骤六、停止服务器

常见问题和解决方案

Q1:服务器启动后,发现启动客户端无法连接上服务器,如何处理?

A1:首先检查服务器和客户端的设置界面,看他们设置的服务器的ip和端口是否一样,只有设置成一样,才能连接上。

如果服务器和客户端的服务器IP和端口的设置都是一样,还是不能连接上,这时候,分别在服务器端所在的电脑和客户端所在的电脑ping一下对方电脑,看看网络是否畅通。

当前版本只测试了服务器和客户端分别处于不同电脑的清空,没有尝试在同一台电脑同时运行服务器和客户端,如遇到问题,请在gitee对应源码项目下评论。

已知问题和待办

问题1: 服务器根目录包含大量文件加载文件列表慢的问题。

当服务器选择的根路径下包含有大量文件的时候,在将fli.idx文件数据加载到“文件列表”界面时候,需要一定等待时间,已测试,加载50万文件,需要稍微等待片刻。根据每个人的电脑配置清空,等待的时间长短不相同。

问题2: 界面上的显示和操作逻辑还有待后续迭代完善。

例如,状态栏中显示关键操作的信息,还需要进一步添加完善。

问题3: 日志界面中右侧的按钮“换行”“锁定”,在按下后,样式没有设置。

问题4: 目前Pi2的版本更新,不能通过连线自动更新,功能还没完成。

问题5: 目前只有Windows的exe的发布包,MacOS的发布包由于Mac平台应用安全策略等原因,没有生成发布包,Linux的发布包也需要补充。

问题6: 同pisces2-m项目一样,Pi2适用于根据客户端接收文件能力来传输的情况。如果服务器端机器性能较差,会导致客户端启动了10多个实例再等待服务器发送数据的情况,不利于文件传输效率。(这个问题由Pi2设计的目标决定,不打算在Pi2或Pisce2-m中处理该问题)

问题7: 由于时间仓促,且对Pi2使用到的技术很多都是第一次使用,难免有考虑不周,测试覆盖不到的地方导致bug的情况。一旦发现bug,将第一时间修复处理。

问题8:菜单上的 帮助 -> 教程 和 更新功能尚未完成,关于Pi2的功能有待完善(添加链接,直接跳转到本文档)。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注