沫忆心V1.o版终于在昨天竣工了。做这个项目之前,我们定的时间是8月20日,当时,还觉得时间很充分,应该可以完成,熟知后面一拖再拖,直到昨天。这件事中也可以反映一个人做事的态度,自己规划的事情却不能够按时完成。以后这一方面得加强了。闲话少说了,还是切入正题吧!
这个项目,我负责的是服务器端,我搭档(小心姐)负责的是客户端。这次合作我非常满意,比以前好多了,貌似我们两都慢慢的学会了接受别人与自己不同的意见,合作关系也比以前融洽,而且,讨论的也比较多。之前在定框架的时候,我老是弄不明白怎么样把各部分功能结合在一起,后面,在讨论的过程中,慢慢理清了整个程序的框架。框架定好之后,我们就开始协商服务器端与客户端接受消息的协议(这部分是关键),其实,在编写通信应用程序,无非就是协议。只要通信双方都遵守规定的协议,就可以了。话虽如此,但我们在开发程序时,由于之前定的协议不够完善,我们就各自按着各自的想法去修改协议了,以至协议不一致,后面测试时,大家应该也可以猜到结果了。
我觉得我们团队有一点做的不好就是:没有每写完一个功能模块就测试,而是等到各自功能模块都写完了,才开始测试。我觉得这可能也是导致我们项目变慢的原因。
说了这么久,还没有说:我们项目的功能。现在就介绍下我们项目的功能:
1.能够实现简单的聊天(文本聊天)
2.能够实现网络五子棋功能,而且还可以边下棋边聊天
3.能够实现网络画板功能
当初,我们做项目文档时:还添加了大型文件传送的功能,还有远程控制的功能,目前还没实现,不过我们以后会慢慢升级我们的版本的。下面是我们项目展示图:
1. 注册和登录界面:
2.聊天界面:
3.发送五子棋邀请界面:
4.下棋输赢界面:
5.发送网络画板邀请界面:
6.网络画板界面:
7.网络画板与聊天界面:
下面谈下我在项目中遇到的困难:
1.当注册名和发送文本聊天的内容是汉字时,出现乱码现象。
问题代码:
public void sendMsg2One(String sender,String content)throws IOException{
dous.writeInt(4+1+1+1+sender.length()+content.length());//发送总长度
}
当名字和内容为汉字时,肯定总长度不是我上面写的那个,因为每个汉字占两个字节,而按着我写的求字符串的长度并没把汉字当两个字节处理,所以,总长度肯定不对,修改代码:
public void sendMsg2One(String sender,String content)throws IOException{
byte[]senderName=sender.getBytes();
byte[]messageC=content.getBytes();
dous.writeInt(4+1+1+1+senderName.length+messageC.length);//发送总长度
}
2.出现EOFException错误。
测试的时候,老是出现这个错误,当时,真的觉得很纠结,因为不知道从哪下手去解决这个问题,而且上网也查了些资料,大多解释的是:意外到达流的末尾,不过,我觉得好像跟我这个程序没什么联系,有的说是:当你试图去读一个基本类型数据,而对方并没有发送该类型的数据,不过,我与搭档核对之后,也排除了这个可能。然后,我觉得可能是我代码逻辑有问题,后面跟搭档讨论了一番,重新看了下代码,真的是代码逻辑有问题。因为,我的程序中各功能模块中用的是同一个网络输入流和输出流,而我每次写完数据时又将其dous.flush()强制关闭了,然后,写数据的时候,又用这个dous去写,很明显不对,后面去掉dous.flush();这条语句就没出现这种错误了。哎,这种逻辑错误还真难发现。
3. 在发送棋盘时,得到本地图片是Image类型的,我将其强制转换成BufferedImage类型(因为ImageIO.write()方法中图片不能为Image类型),导致出现这种错误。sun.awt.image.ToolkitImage cannot be cast to java.awt.image.BufferedImage
要先将Image类型转换成BufferedImage类型,具体步骤是:
Image image=Resource.chessBoard.getImage();//得到棋盘的图片
BufferedImage buff=new BufferedImage(chessBoard.getHeight(null),chessBoard.getWidth(null),BufferedImage.TYPE_INT_RGB);
buff.createGraphics();
这样就可以了。
4.文件输出完毕时,没有写fous.flush(),和fous.close()方法。其实,这个问题我自己没有注意,后面胡zong在看我代码时,一下子就发现了,虽然看似很小的问题,不过,这个小小的问题可能导致程序中出现很莫名其妙的问题,所以,以后的注意自己的编程习惯了,要注意每个细节啊!
5.打印语句太多,太凌乱,有时找个打印语句都得看上半天,而且,打印语句太多,程序看上去有点杂乱无章,虽然,接触过日志管理系统,但可能是还不熟悉,所以没有用到过。
6.修改协议时,双方都没有互相通知,导致在测试项目时,出现了各种各样的错误,而且找错误时也很纠结,因为我们都没有怀疑是没有遵循协议的原因,就一味的在程序中找错误,后面纠结了很久,就想到了是不是没有遵循协议的问题。果不其然,双方持有的协议不一样,不出错才怪呢?其实,很多错误,都是我们双方没有遵循协议的原因,导致项目进展的很慢。
7.这个项目还有个很大的问题没有解决:就是在聊天的功能模块中,界面出现组件移位的现象,而且好奇怪的是:当用英文聊天时,窗体界面是正常的,但是,当用中文聊天时,就会出现这种情况,而且,将界面最大化,在最小化,界面才恢复正常,不知道是什么原因?求各位大神指导下。
- 大小: 38.1 KB
- 大小: 325.5 KB
- 大小: 278 KB
- 大小: 279.4 KB
- 大小: 260.1 KB
- 大小: 13.3 KB
- 大小: 10.4 KB
- 大小: 279.8 KB
分享到:
相关推荐
三相LCL并网逆变器:高精度快速响应的有功无功解耦控制技术,三相LCL并网逆变器,有功无功解耦控制,控制精度高,响应速度快。 ,三相LCL并网逆变器; 有功无功解耦控制; 高控制精度; 快速响应。,三相LCL逆变器高精度快速响应解耦控制
一种基于Lifelogging视频的文本标签生成模型.pdf
基于黏菌优化算法(SMA)的改进与复现——融合EO算法更新策略的ESMA项目报告,黏菌优化算法(SMA)复现(融合EO算法改进更新策略)——ESMA。 复现内容包括:改进算法实现、23个基准测试函数、多次实验运行并计算均值标准差等统计量、与SMA对比等。 程序基本上每一步都有注释,非常易懂,代码质量极高,便于新手学习和理解。 ,SMA复现;EO算法改进;算法实现;基准测试函数;实验运行;统计量;SMA对比;程序注释;代码质量;学习理解。,标题:ESMA算法复现:黏菌优化与EO算法融合改进的实证研究
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
基于数据挖掘的教师教育质量评价指标体系的构建.pdf
内容概要:本实验报告旨在介绍将正则表达式(RE)转化为非确定有限自动机(NFA)的过程与技术细节。内容包括了理论背景的介绍,比如为什么需要这样的转换以及它背后的数学逻辑;详细解释如何通过编写特定功能的程序完成从正则表达式到NFA的状态迁移图构建;并且探讨了后续将这个NFA再转变成DFA(确定有限自动机)并进行优化的方法。最后,通过一组具体的例子来进行验证性的实践操作,并讨论在整个过程中遇到的各种挑战及解决方案。此外,报告还包含了对于不同设计方案的选择考量,以及对于所选技术和工具的应用评估。 适用人群:对于希望深入理解编译原理、特别是形式语言和自动机构造的学生或专业人士来说是一份宝贵的学习资料。 使用场景及目标:本篇文章主要用于教育指导,适用于大学本科计算机科学专业相关课程的教学辅助材料,帮助学生更好地理解复杂概念之间的联系。通过动手实践可以强化他们对该领域关键知识点的记忆和技术能力。 其他说明:文中提供的源代码实例和图表有助于使用者更直观地领会转换过程的具体步骤,同时也有助于培养解决问题的能力和思维方式。
nodejs010-1.2-29.el6.centos.alt.x86_64.rpm
"基于萤火虫算法优化麻雀算法的深度置信网络FSSSA-DBN数据分类预测模型及其Matlab代码详解",基于萤火虫算法改进麻雀算法优化深度置信网络(FSSSA-DBN)的数据分类预测 matlab代码注释详细, ,核心关键词:基于萤火虫算法; 改进麻雀算法; 优化深度置信网络(FSSSA-DBN); 数据分类预测; MATLAB代码注释详细。,基于FSSSA-DBN的深度分类预测算法的MATLAB代码注释
基于自适应粒子群算法的源储容量配置优化策略:考虑合作博弈与Shapley分配模型的研究报告,考虑合作博弈的源储容量配置代码 采用自适应粒子群算法编写 考虑shapley分配模型对收益进行分配 容量配置+优化调度 本人亲自编写,附参考文献,可改写性强,可。 ,合作博弈; 自适应粒子群算法; 容量配置优化调度; 收益分配模型(Shapley); 参考注释。,基于Shapley分配的容量配置优化与调度代码:自适应粒子群算法的实现
nodejs010-nodejs-editor-0.0.5-1.el6.centos.alt.noarch.rpm
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
《深入解析与复现:基于ICMIC混沌初始化的SHSSA算法及其与SSA的对比研究》,麻雀搜索算法(SSA)复现:《螺旋探索与自适应混合变异的麻雀搜索算法_陈功》 策略为:ICMIC混沌初始化种群+螺旋探索改进发现者策略+精英差分扰动策略+随机反向扰动策略——SHSSA 复现内容包括:改进SSA算法实现、23个基准测试函数、改进策略因子画图分析、相关混沌图分析、与SSA对比等。 程序基本上每一步都有注释,非常易懂,代码质量极高,便于新手学习和理解。 ,麻雀搜索算法(SSA)复现; 螺旋探索; 自适应混合变异; ICMIC混沌初始化种群; 策略因子画图分析; 代码质量高; 对比实验。,麻雀搜索算法(SSA)的SHSSA策略复现与对比分析
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
基于MATLAB/SIMULINK仿真的永磁同步电动机双闭环控制系统研究:变频侧五电平控制与整流侧三电平控制的实现与优化(默认MATLAB 2018b环境),MATLAB,SIMULINK仿真 永磁同步电动机,转速电流双闭环 变频侧五电平控制,整流侧三电平控制 默认MATLAB2018b ,MATLAB; SIMULINK仿真; 永磁同步电动机; 转速电流双闭环; 五电平控制; 三电平控制; MATLAB2018b,MATLAB中永磁同步电机双闭环五电平控制策略研究
《利用HFSS软件自制的角锥(矩形)喇叭天线模型:结果展示与参数化调整教程》,HFSS角锥(矩形)喇叭天线 天线模型,附带结果,可改参数,HFSS软件包 自己做的,保证正确(有教程,具体到每一步,可以自己做出来参考bao gao) ,HFSS; 角锥喇叭天线; 矩形; 天线模型; 附带结果; 可改参数; HFSS软件包; 自制; 保证正确; 教程,HFSS软件角锥喇叭天线模型:可改参数保证正确结果
1、文件内容:publican-redhat-2.7-6.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/publican-redhat-2.7-6.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
,java多用户商城源码,多用户b2b2c商城源码,商城小程序源码,java小程序源码 PC+H5+小程序+APP源码,多用户商城APP源码, 开发语言:java+springboot+vue+uniapp
"MATLAB Simulink驱动下的光储微电网并网系统优化:改进光伏MPPT控制,实现蓄电池SOC均衡控制策略重构,拓展可增加蓄电池组的应用",MATLAB Simulink#改进光储微电网并网系统 光伏MPPT控制 蓄电池SOC均衡控制策略 重构,可增加蓄电池组 ,MATLAB Simulink; 改进光储微电网并网系统; 光伏MPPT控制; 蓄电池SOC均衡控制策略; 蓄电池组重构,"MATLAB Simulink下的光储微电网并网系统优化研究"
nodejs010-nodejs-ctype-0.5.3-3.1.el6.centos.alt.noarch.rpm
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx