文件传送小结

通信讲的就是根据协议传送数据。传送文件的套路也是差不多的,我们做的也是小文件的传送。可能具体的做法还是各有不同,我们是用最笨的方法做的,客户端首先使用文件输入流将文件读出来,将读到的字符串转换成byte 数组,再写进网络输出流中。后面就是服务器的事了,流程基本上反过来就差不多了。不过我们再做的过程中,还是纠结了很久,很多小问题都困扰着我们。特别是我这边的客户端,我犯了几个很揪心的错误。

 

1.首先最不能原谅自己的就是现在居然又犯这个错,e.getSource() e.getActionCommand()返回的结果类型又搞错了。以后坚决要记住了。    

2.将byte数组转换成string 类型。很遗憾,我想当然的使用了toString()方法,结果打印测试的时候,一直是乱码,想不通,为什么前面打印它的长度是对的,这里就卡掉了。我和搭档试了很多遍结果还是一样。于是去查API文档,发现方法用错了。上面那个方法是将单个byte值转换string时用的.string(byte[] bytes)的这个构造方法才是我们需要的。然后就迫不及待的用了这个方法。

3File  file=new File("D:\\100"+name);   //文件保存的地址 

我们将收到的文件的内容都打印出来了,可是去上面这个目录上查看的时候还是没有。真的想不通啊,怎么可能呢!不可能的啊,我们都可以将其内容读出来了,怎么还是没有???

坐在那发了下呆,才无意中看到这个路径,是不是少了点什么,赶紧加上。

File  file=new File("D:\\100\\"+name);   //文件保存的地址

才终于解决啊。

 

     以上读取文件时是一次从头到尾,再写进网络流中,没有考虑到大文件传送时会遇到的问题。所以针对大型文件显然这不是个好方法了。

一般发送方可以采用多线程的并行方法来读取和传送,这样会更快些。首先自己可以定义根据文件的大小来分区,固定每一小块的文件的大小(当然最后一块可以不同),当然多线程传送的时候也要标记每一小块的顺序,以便后来文件的还原。接收方在接收文件数据时,根据每个线程记录的顺序标记,和协议规定的每一快文件的大小来确定接收到的文件的插入位置,再整合到原来的文件,完成大文件的传送。不过大型文件我们暂时还没有实现,打算在这次的项目中实现。

 

提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值