开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1074|回复: 7
收起左侧

[完成] 局域网 服务端传送文件给客户Duan实现方法

 关闭 [复制链接]
结帖率:56% (5/9)
发表于 2021-3-28 23:49:35 | 显示全部楼层 |阅读模式   广东省韶关市
100精币
各位老师 各位大哥 有没有
直接服务端传送给客户Duan的 不走FTP 那些的情况下传送的
或者比较完整的例子 可以给老弟一个参考
谢谢大哥!!!

最佳答案

查看完整内容

[e=2].版本 2 .支持库 dp1 .子程序 生成发送字节集_加密, 字节集 .参数 原字节集, 字节集, , 需要读取的全文件名,含后缀名 .参数 发送指令, 文本型 .参数 要发送到的客户句柄, 整数型, 可空, 客户句柄,默认为至服务器 .参数 是否发送文件, 逻辑型, 可空, 默认为空 .参数 文件名称, 文本型, 可空, 如果是否发送文件为真,文件名必须填写 .局部变量 更新字节集, 字节集 .局部变量 字符合集, 文本型 .局部变量 密文1, 文本型 .局部 ...
结帖率:83% (5/6)

签到天数: 2 天

发表于 2021-3-28 23:49:36 | 显示全部楼层   河北省秦皇岛市
  
子程序名返回值类型公开备 注
生成发送字节集_加密字节集 
参数名类 型参考可空数组备 注
原字节集字节集需要读取的全文件名,含后缀名
发送指令文本型
要发送到的客户句柄整数型客户句柄,默认为至服务器
是否发送文件逻辑型默认为空
文件名称文本型如果是否发送文件为真,文件名必须填写
变量名类 型静态数组备 注
更新字节集字节集 
字符合集文本型 
密文1文本型 
密文2文本型 
密文长度整数型 
n整数型 
更新长度整数型 
原左长度整数型 
原左字节集字节集 
原右字节集字节集 
指令集文本文本型 
最终字节集字节集 
置随机数种子 ()
如果真 (是否为空 (要发送到的客户句柄))
要发送到的客户句柄 = 0
如果真 (是否为空 (是否发送文件) 是否为空 (文件名称))
其它操作.信息框_错误 (“请填写发送的文件名”)
返回 (到字节集 (“”))
如果真 (是否为空 (文件名称))
文件名称 = “”
字符合集 = “0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz!#$%'()*+,-./:;<=>?@[\]^_`{}~&”
' *******生成两个密文
计次循环首 (取随机数 (20, 40), n)
密文1 = 密文1 + 取文本中间 (字符合集, 取随机数 (1, 92), 1)
密文2 = 密文2 + 取文本中间 (字符合集, 取随机数 (1, 92), 1)
计次循环尾 ()
' **********获取密文长度,发送给对方
密文长度 = 文本_取长度 (密文1)
' ********指令集文本,将文件名称与要发送的客户写入,用于客户与客户之间的沟通
指令集文本 = #前缀#内容分隔符 + 发送指令 + #内容分隔符 + 文件名称 + #内容分隔符到文本 (要发送到的客户句柄)#内容分隔符
更新字节集 = 到字节集 (指令集文本) + 原字节集
更新长度 = 字节集_取长度 (更新字节集)
原左长度 = 取随机数 (1, 更新长度)
' ************对更新后字节集进行分割
原左字节集 = 字节集_取左边 (更新字节集, 原左长度)
原右字节集 = 字节集_取右边 (更新字节集, 更新长度 - 原左长度)
最终字节集 = 到字节集 (到文本 (原左长度)“|”到文本 (密文长度)“|”)到字节集 (密文1) + 原左字节集 + 到字节集 (密文2) + 原右字节集
返回 (加密数据 (最终字节集, “******”, 1))


i支持库列表   支持库注释   
dp1数据操作支持库一
  
子程序名返回值类型公开备 注
解析收到字节集_解密字节集 
参数名类 型参考可空数组备 注
接收的加密字节集字节集
返回的指令数组文本型1.前缀,2.文件标识,3.文件名,4.客户句柄
变量名类 型静态数组备 注
解密字节集字节集 
解密后文本文本型 
原左长度整数型 
密文长度整数型 
文本数组文本型0
原左字节集字节集 
原右字节集字节集 
原合字节集字节集 
原合文本文本型 
左侧值整数型 
前缀长度整数型 
还原字节集字节集 
解密字节集 = 解密数据 (接收的加密字节集, “******”, 1)
解密后文本 = 到文本 (解密字节集)
文本数组 = 分割文本 (解密后文本, “|”, 2)
原左长度 = 到整数 (文本数组 [1])
密文长度 = 到整数 (文本数组 [2])
' 将左侧原左长度与密文1去掉
左侧值 = 文本_取长度 (文本数组 [1]“|” + 文本数组 [2]“|”)
解密字节集 = 取字节集右边 (解密字节集, 取字节集长度 (解密字节集) - 左侧值 - 密文长度)
原左字节集 = 取字节集左边 (解密字节集, 原左长度)
原右字节集 = 取字节集右边 (解密字节集, 取字节集长度 (解密字节集) - 原左长度 - 密文长度)
原合字节集 = 原左字节集 + 原右字节集
原合文本 = 到文本 (原合字节集)
返回的指令数组 = 分割文本 (原合文本, #内容分隔符, )
前缀长度 = 文本_取长度 (返回的指令数组 [1] + 返回的指令数组 [2] + 返回的指令数组 [3] + 返回的指令数组 [4])文本_取长度 ( #内容分隔符 ) × 4
还原字节集 = 取字节集右边 (原合字节集, 取字节集长度 (原合字节集) - 前缀长度)
返回 (还原字节集)


i支持库列表   支持库注释   
dp1数据操作支持库一

回复

使用道具 举报

结帖率:83% (39/47)

签到天数: 19 天

发表于 2021-3-29 00:03:21 | 显示全部楼层   福建省宁德市
回复

使用道具 举报

结帖率:100% (4/4)

签到天数: 16 天

发表于 2021-3-29 00:10:42 | 显示全部楼层   广东省茂名市
回复

使用道具 举报

结帖率:56% (5/9)

签到天数: 13 天

 楼主| 发表于 2021-3-29 00:34:57 | 显示全部楼层   广东省韶关市
lixuhui2468 发表于 2021-3-29 00:10
https://bbs.125.la/forum.php?mod=viewthread&tid=14522221
自推一下

好用是好用但是要搭建WEB环境
回复

使用道具 举报

结帖率:56% (5/9)

签到天数: 13 天

 楼主| 发表于 2021-3-29 00:35:41 | 显示全部楼层   广东省韶关市
回复

使用道具 举报

结帖率:89% (24/27)

签到天数: 13 天

发表于 2021-3-29 14:50:06 | 显示全部楼层   广东省深圳市
群:831918612
里面有传输例子。望采纳。正在使用者的。
回复

使用道具 举报

结帖率:83% (5/6)

签到天数: 2 天

发表于 2021-3-31 09:03:15 | 显示全部楼层   河北省秦皇岛市
我现在正在做类似于这样功能的程序,涉及到单位信息,不能给你源代码,可以给你提供一个思路试试。我用的保密通信支持库。

********************************服务端处理数据并发送给客户端******************************
一、做一个服务端,一个客户端,这是废话,教程可以搜到。服务端与客户端连接后......
二、服务端用“读入文件”读取你想传送的文件,赋值给变量【文件字节集】,同时通过文本取右边的方法,得到文件名【文件名称】必须要有文件的后缀名。测试了一下,十几M的文件可以一次性传送成功,具体什么原理我也不太懂,初学。此时取回的是该文件的字节集。三、我用的是加密传送文件,其中还有一个动态加密。先“置随机数种子”,然后设置一个文本型密文库,将自定义的字符(比如数字、小写字母、大写字母、符号等等)赋值给这个密文库。建议一个循环体(当然循环次数也可以随机,不过后续就有点麻烦),每次随机抽取密文库中任意字符,加到密文中,我有了两个密文:【密文1】和【密文2】,也是文本型。
四、先取出【文件字节集】的长度【文件长度】(整数型),再取随机数(1,文件长度),根据随机取出的长度分割【文件出字节集】,用“字节集_取左边”和“字节集_取右边”的方法,分别取出【文件字节集】的左和右,分别赋值给【文件左】【文件右】(字节集型)。
五、组合字节集。【文件字节集_组合】=到字节集(密文1)+【文件左】+到字节集(密文2)+【文件右】,这样就将原来的文件字节集打散了,当然你也可以多放些密文,只是比较麻烦。
六、添加文件信息。因为客户端在接收取数据后,需要知道密文的数量、密文的长度才能将打散后的【文件字节集】还原,需要知道文件名(至少是后缀)才能从字节节集还原成文件,所以这些信息需要与传送的数据一起传到客户端。所以这里:【文件字节集_组合】=到字节集(【文件名称】+“|”+到文本(密文1 长度)+“|”+到文本(密文2长度)+“|”+到文本(字节集_取长度(【文件左】)+“|”))+【文件字节集_组合】。这里采用“|”作为分割符,以便客户端接收到后通过“分割数组”采集这些信息。【到字节集(【文件名称】+“|”+到文本(密文1 长度)+“|”+到文本(密文2长度)+“|”)】作为文件头。
七、二次加密。【传送的数据】=加密数据(【文件字节集_组合】,“5854887”,1)。这里的“5854887”为密文,“1”为加密方式,需要与客户端约定好。
八、传送数据。服务端.发送数据(客户句柄,【传送的数据】)



*******************************客户端接收数据并还原文件*************************************
按照服务端的加密程序,一步一步的对客户端接收到的数据进行解密
一、接收数据。客户端.取回数据 (取回的数据)

二、第一次解密数据。【解密字节集】=解密数据(【取加的数据】,“5854887”,1)。然后将其转化为文本。【解密的文本】=到文本(解密字节集)。此时,在服务器端发送来的“文件头”是可以还原为文本的,文件头之后的数据肯定是乱码。不用管它。
三、提取文件头。分割数组(【解密的文本_1】,"|",【文件头数组】)。【文件名称】=文件头数组[1],【密文1长度】=到整数(文件头数组[2]),【密文2长度】=到整数(文件头数组[3]),【文件左长度】=到整数(文件头数组[4])
四、取得文件头的长度。【文件头长度】=文本_取长度(【文件名称】+“|”+到文本(【密文1长度】)+“|”+到文本(【密文2长度】)+"|"+到文本(【文件左长度】))
五、取出文件的字节集。已知了【文件头长度】【密文1长度】【文件左长度】,就可以使用字节集_取中间的方法,将【文件字节集_左】取出来,剩余的部分就是【密文2】+【文件右】的字节集了,取出即可。这里只是简单的加减法,不再例举。最终取出【文件字节集】= 【文件字节集_左】+【文件字节集_右】
六、保存文件。写到文件(取运行目录()+"\"+【文件名称】,【文件字节集】),这样就将接收到的文件保存到程序目录下了。


****************************************************************************************
可以在服务端上加通用对话框,在客户端加上浏览文件等,方便读取和保存文件。
也可以在服务端处理文件数据时,在文件头部分在加上识别指令,让客户端知道接收到的是文件还是文本,用判断语句进行判断后,区分不同情况对数据进行不同处理。这样聊天、文件传送、操作数据库等命令就可以分别执行,具有一定的保密性。
****************************************************************************************
手打不容易,如果有借鉴意义,望采纳。





补充内容 (2021-3-31 09:24):
写的有点错误,服务端部分的文件头的表述上少加了一个【文件左长度】,客户Duan取文件头长度部分少加了一个“|”,计算长度差一点取回的就是乱码

补充内容 (2021-3-31 09:25):
如果仅是传送文件,那就把所有加密和解密步骤去掉就行了,服务端读入文件,客户Duan写到文件。不过至少还需要将传送文件的后缀名传过来

补充内容 (2021-3-31 09:30):
测试可以传送十几M文件,大文件建议按标准长度分割,在每部分前加一个序号做为标记,接收后根据序号顺序再组合后解密。可以利用数组接收

补充内容 (2021-3-31 09:34):
代码也贴上来了,在下面
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表