服务端客户端通讯软件,上传/下载文件多线程版

易语言 2020-07-21 00:08:21

服务端客户端通讯软件,上传/下载文件多线程版

.如果真 (文件是否存在 (取运行目录 () + “\date”) = 假)
创建目录 (“date”)
信息框 (“目录不存在,已经创建”, 0, )
.如果真结束
服务器.置线程池大小 (1, 20)
服务器.启动 (12730, &处理函数, 假)
时钟2.时钟周期 = 60000 ' 每分钟向所有的客户发送一次刷新指令。

.计次循环首 (列表框1.取项目数 (), n)
.如果 (定时刷新 (到整数 (客户句柄数组 [n])))
列表框1.置项目文本 (n - 1, “☆” + 列表框1.取项目文本 (n - 1) + “ :发送刷新信息成功!”)
.否则
列表框1.置项目文本 (n - 1, “◆” + 列表框1.取项目文本 (n - 1) + “ :发送刷新信息错误!”)
.如果结束

.计次循环尾 ()
时钟2.时钟周期 = 0 ' 发送刷新信息后,显示刷新结果半分钟。此时将时钟停止计时;
延迟 (30000)
列表框1.清空 () ' 将列表清空后,重新加入在线的客户。但是这样的做法可能会有问题。
.计次循环首 (取数组成员数 (客户句柄数组), l)
服务器.取客户IP (到整数 (客户句柄数组 [l]), 客户ip)
列表框1.加入项目 (客户ip, )
.计次循环尾 ()
时钟2.时钟周期 = 60000 ' 重新启动时钟。所以加上时钟的周期和延迟,一共是每隔一分半钟,发送一次刷新信息。

.判断开始 (信息类型 = 2)
信息分包 = 分割字节集 (接收的内容, 到字节集 (“@#$%”), )
.判断开始 (到文本 (信息分包 [1]) = “[上传]”)
.如果真 (取数组成员数 (信息分包) = 4)
启动线程 (&写出文件, , )
.如果真结束

.判断 (到文本 (信息分包 [1]) = “[下载]”)
.如果真 (取数组成员数 (信息分包) = 2)
下传文件名 = 到文本 (信息分包 [2])
启动线程 (&下传文件, , )
.如果真结束

.判断 (到文本 (信息分包 [1]) = “[刷新]”)
启动线程 (&发送文件列表, , )
.默认

.判断结束

.判断 (信息类型 = 0) ' 客户连接进入后,启动线程,发送文件列表。
列表框1.加入项目 (客户ip, )
加入成员 (客户句柄数组, 到文本 (客户句柄)) ' 将每个接收到的客户句柄保存在数组变量中
启动线程 (&发送文件列表, , )

.判断 (信息类型 = 1) ' 客户断开。那么将列表框里的客户IP删除。实际上代码执行并不顺畅,不知原因
.计次循环首 (列表框1.取项目数 (), n)
.如果真 (列表框1.取项目文本 (n - 1) = 客户ip)
列表框1.删除项目 (n - 1)
删除成员 (客户句柄数组, n, ) ' 删除数组的成员。这里的顺序其实是与列表框中一致的,只不过数组是从1开始排序,列表框是从0开始排序。
跳出循环 ()
.如果真结束

.计次循环尾 ()