简单聊天室的搭建(二)

      最近这几天一直在琢磨那个聊天室的构建,虽然我们的项目是打算做网络游戏,但还是先把这个聊天室的功能给完善了吧···

      现在想想,要做成一个像QQ功能那么多的聊天室确实不容易,不要看我们平时用QQ聊天时那么的轻松简单,一输入自己的账号及密码,几秒钟之后就出现好友列表,在线的人数等等,一双击好友就出现对话框,想聊天就聊天,想传送文件就传送文件的,要多方便就多方便!但真正自己做的时候,就云里雾里了,特别是一个人做的时候,既要充当服务器,又要充当客户端A,还要充当客户端B···这几天经过看书,把思路整理了一下:

      先制定它们之间的通信协议,发送的消息都是由消息头和消息体组成的,消息头包括消息的长度,消息的类型,消息的接收者,消息的发送者;消息体就是具体的消息,不同的消息,消息体不同,如注册消息就只需要昵称和密码,好友请求消息就需要好友的账号等等。如果只是客户端与客户端的聊天功能是很好实现的,但问题是我们加对方为好友之后要在下一次登录的时候还是会显示为好友,还有,既然我们是用的C/S网络,就不像对等网络那样,非得双方都在线的时候才能进行通信,那么我们应该可以对数据进行存储,也就是发送离线消息之类的!这里就可以将整个体系分为四大板块:用户界面板块,数据存储板块,服务器处理板块,客户机处理板块。

      整个流程如下:

      1.客户端注册用户:客户端发送注册消息给服务器处理,服务器经查询,若该账号不存在则可以注册,否则不能注册

      2.客户端登录服务器:客户端发送登录消息给服务器处理,服务器经验证,账号和密码正确就登录成功,否则不能登录,登录成功的同时,服务器将好友列表发送给该用户,服务器将该用户添加到在线用户的队列中

      3.客户端进行各种操作:a,添加好友:先发送查询在线的用户的消息给服务器,服务器发送在线好友列表给该用户,该用户再进行添加好友的操作,发送添加好友的请求给服务器,再服务器转发此条消息给被请求的用户,该用户做出回应给服务器,服务器再回复给请求的用户,如果添加成功,存储版块里面要做相应的记录,两用户的界面上也会出现相应的变化!b,与好友进行聊天:双击好友出现对话框,发送聊天消息给服务器,服务器将消息发送给消息的接收者,消息的接收者那边就会弹出一个选择框,是否进行对话,选择是,就出现对话框,要不然就不能接收到消息,服务器再将消息的到达情况发送给消息的发送者!c,文件的传送:和聊天差不多,就只是要添加文件选择器,便于文件的搜索和保存!

      4.客户端下线:直接关闭socket对象以及输入输出流,在服务器那端收到用户下线的消息就将下线的消息发送到该用户的在线好友上面!

       基本上就是这些吧,还有其他的功能暂时先不要添加上来吧,要不然思路由乱了!现在已经出现了大概的模型,就有几个功能还没有完善,聊天那一块儿还没优化,相信只要能把思路理清楚,这些功能添加上去之后还是挺不错的吧!下次完善好了之后再跟大家分享代码吧···

猜你喜欢

转载自bearsorry.iteye.com/blog/1161543
今日推荐