沫忆心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
分享到:
相关推荐
《沫忆心V1.0记录——通信项目详解》 在IT行业中,通信项目是至关重要的环节,它涉及网络协议、数据传输、并发处理等多个核心领域。沫忆心V1.0记录为我们揭示了一个典型的通信项目的实现过程。在这个项目中,我们...
HCIP-Datacom-Core Technology V1.0 实验室搭建指南.docx HCIP-Datacom-Core Technology V1.0 实验手册.docx HCIP-Datacom-Core Technology V1.0 实验手册.pdf HCIP-Datacom-Core Technology V1.0 实验设备清单....
HCIP-Datacom-Core Technology V1.0 培训PPT HCIP-Datacom-Core Technology V1.0 课程表.xlsx HCIP-Datacom-Core Technology V1.0 实验设备清单.xlsx HCIP-Datacom-Core Technology V1.0 实验室搭建指南.docx HCIP-...
"V1.0 PC Access SP6 完整安装包 解决出现错误问题 支持win7" 这个标题指的是一个特定版本的软件,即PC Access的Service Pack 6(SP6)的V1.0版本。PC Access是西门子为工业自动化领域提供的一种软件解决方案,它...
总结,S7-200 PC ACCESS v1.0 SP5和SP6是西门子对原版软件的重要升级,它们提供了更好的性能、更稳定的通信和更多的功能。对于S7-200系列PLC的用户来说,及时安装这些服务包能显著提高工作效率,减少可能出现的问题...
"QCOM_串口调试工具_QCOM_V1.4_QCom工具_htt_QCOM_V1.0调试"这个标题提到了一个专用于串口调试的工具,版本为QCOM V1.4,它是由QCom公司开发的,并且似乎还有一个相关的HTTP协议调试功能。描述中提到该工具还附带了...
通过STM32开发指南V1.0版的学习,开发者不仅能熟练掌握库函数的使用,还能理解底层硬件的工作原理,这对于进行更高级的项目开发和优化至关重要。这份指南涵盖了从基础到进阶的多个层次,无论你是初学者还是经验丰富...
这个型号通常代表该路由器的硬件版本,"V1.0" 指的是它的第一版硬件设计。路由器是网络连接的核心设备,它允许家庭或办公室内的多台设备通过共享互联网连接进行通信。 【描述】"TL-R473G V1.0升级软件20171101" ...
HCIE-Datacom V1.0 实验手册
HCIA-Datacom(华为认证ICT Associate-Datacom)是华为认证体系中针对数据通信方向的初级认证,主要面向华为公司办事处、代表处一线工程师,以及希望学习华为数通产品技术的人士。HCIA-Datacom的内容涵盖了路由交换...
### virtio-v1.0-cs04中文翻译版知识点详解 #### 一、概述与目标 **virtio-v1.0-cs04**是一个关于**virtio**系列设备的规格文档,主要针对虚拟环境下的设备进行了标准化规定。该文档的中文翻译版是由热心人士共同...
总的来说,"忆春聊天室 v1.0"是一个涵盖了多种IT技术的项目,包括但不限于前端开发、后端开发、数据库管理、实时通信、网络安全以及用户体验设计。无论是对初学者还是经验丰富的开发者,都能从中找到学习和探索的...
MingQQ v1.0高仿版的源代码中,包含了多个模块,例如用户界面UI的设计、网络通信模块的实现、消息解析和发送等。开发者可以通过阅读这些代码,学习如何构建复杂的用户界面,如何处理网络请求,以及如何设计事件驱动...
【标题】"masnmapscan-V1.0-master_资产扫描_" 指的是一款用于内网资产快速扫描的工具,版本为V1.0,其核心功能是多线程扫描内网端口,以便全面了解网络中的设备和服务状况。在IT管理中,对内网资产的清晰掌握至关...
华为认证数通工程师HCIP-Datacom-Core Technology V1.0培训教材中涉及到的网络设备平面划分的知识点主要围绕着交换机的三个平面:转发平面、控制平面和管理平面。以下将详细解释这些知识点。 首先,转发平面主要...
NFC(Near Field Communication)是一种短距离无线通信技术,它允许设备在近场范围内进行数据交换。NFC解码软件通常用于读取、解析或管理NFC标签中的数据,这些标签广泛应用于移动支付、门禁控制、信息传输等多个...
很抱歉,根据您提供的信息,"挂机V1.0"似乎是某种软件或者程序的版本号,但没有具体的描述或详细的功能说明。在通常情况下,"挂机"这个词在IT行业中可能指的是自动化脚本、无人值守运行的程序,或者是游戏中的自动...
01 数据通信网络基础 02 网络参考模型 03 华为VRP系统 04 网络层协议及IP编址 05 IP路由基础 06 OSPF基础 07 以太网交换基础 08 VLAN原理与配置 09 生成树 10 实现VLAN间通信 11 以太网链路聚合与交换机堆...
MAVLink V1.0 通信协议是由Lorenz Meier于2009年初首次发布的一种微型飞行器连接通信协议,它的全称是Micro Air Vehicle Link。这种协议广泛应用于无人机、无人飞行器等多种微型航空器与地面站之间的通信。MAVLink V...
【项目计划书v1.0版 - 更改1】是一个关于软件项目的详细规划文档,主要关注基于Node.js的研究与应用。这份文档由温元祯在2017年3月22日编写并发布了初始版本V1.0。文档不仅包含了项目的背景、目标和范围,还涵盖了...