项目名称:JAVA通信项目——QQ

成员:邢正,郑振兰

项目需求:QQ每个人都用过,它的意义就不再讲了。之所以选择做QQ事因为它有挑战性,涉及到通信、传输、swing等各种知识。(好吧我不装逼了,说的直白点,代码量大,如果写五子棋贪吃蛇之类的绝对写不到500行)

首先整个项目分为两部分:客户端和服务器。客户端要完成的功能就是界面(主界面,好友列表,聊天界面)以及登录、聊天功能。服务器作为后台,负责通信连接。做项目时逻辑一定要清楚,类与类包与包之间的逻辑关系以及分层一定要明白

代码截图:

java 定时发QQ消息_服务器

java 定时发QQ消息_java 定时发QQ消息_02

java 定时发QQ消息_java 定时发QQ消息_03

java 定时发QQ消息_集合框架_04

java 定时发QQ消息_java 定时发QQ消息_05

java 定时发QQ消息_java qq通信_06

java 定时发QQ消息_java qq通信_07

java 定时发QQ消息_服务器_08

java 定时发QQ消息_java qq通信_09

因为没用数据库也没有用集合框架来记录用户信息,所以在登录时直接在Myserver里进行判断,账号可以随便填,但密码必须是123456,不是则弹出提示框,是则跳转到好友列表。聊天功能没能实现从服务器转发到客户端,但是服务器已经可以抓到从客户端输入的信息。这里出了个错,我们测试服务器抓信息时很正常,但是关闭界面后会报错java.net.SocketException: Connection reset,应该是哪里的socket没有正常关闭,但是不知道怎么解决了,就留下了这个bug。一开始还没在意,继续往后写,当让服务器像客户端转发消息时就出错了。

java 定时发QQ消息_服务器_10

可能是我太笨,实在是找不到一个好的角度自拍既可以拍到人有拍到电脑于是就这样拍了一张(虽然怎么看都像是秀恩爱而不像是在敲代码)

约定的规范:凡是涉及到界面设计的,需要加监听的地方,起名字都必须直观方便;客户端和服务器端必须有一个名字相同的包如com.commen,用来存放User,Message等类;端口号为9999;所有类的命名需要统一协商以便调用以及类里的方法或成员变量;规定好消息包,如1代表信息正确可以登录,2表示信息错误,还有其他消息包;每个功能前加注释。

记录时间:选题10min

分工、编写程序、调试总共用了四天(包括查书看视频)

心得体会:动嘴容易动手难,感觉挺好做的东西真正做起来会遇到很多问题,通信、流这里的知识不牢固,需要看着书才能敲出来,出了差错解决起来也不简单,项目涉及到集合框架知识,这里需要再系统学一学。不管以后做什么项目,一定要动手做,光看视频是很难掌握的,就算对着视频敲下来,也会发生一些错误,我这里出现最多的就是jdk版本问题……当然还有其他小问题,只好向度娘求助。