java学习笔记(二十六)——开发一个小项目(VMeeting1.0)

java学习笔记(二十六)——开发一个小项目(VMeeting1.0),第1张

java学习笔记(二十六)——开发一个小项目(VMeeting1.0)

上一次大概学习了cs架构是什么东西。这次可以着手来实现一个小项目,做一个低配版QQ。

大概需要设计实现双方通信,先画个大纲。

项目架构 server:接收客户端A的消息,然后转发给目的客户端B
    server:做server相关任务调度。连接查询请求的客户端——启动界面——循环监听消息。serverUI:服务器端的界面设计。serverListener:服务器端界面的监听器。serverReceiveMsg:服务器端接收客户端发送的消息。
client:多个客户端,相互发送消息但是要经过服务器端的转发
    client:完成一个客户端执行任务的调度。连接服务器端——启动界面——循环监听服务器端发送的消息。clientUI:客户端的界面设计。clientListener:客户端界面对应的监听器。clientReceiveMsg:客户端接收服务器端的消息。
业务逻辑细节
    数据包封装:协议规则:send客户端ID【int】+send客户端name【String】+receive客户端ID+receive客户端name【String】+消息类型【byte】+时间【String】+消息【具体类型具体定义】每个客户端在启动发起与服务器端的链接的时候,要增添登录功能,包装name和ID(身份识别,独一无二),online(在线标记)。,将该信息发送给服务器端,服务器端维护所有用户的Table将信息保存下来。(需要永久保存的时候设计数据库交互)服务器端收到消息之后要将消息先读到缓冲区并记录是给谁的消息,查询客户端是否在线,在线即发送消息,否则保存,等待客户端上线之后发送。(循环消息等客户端上线,or客户端上线之后遍历消息缓存)。每个客户端除了个人信息还需要维护好友列表。客户端发送消息之前选择好友列表中的好友,然后才可以发送消息。发送消息格式需要提前选择。涂鸦消息需要另外设计涂鸦面板,在原面板中保留区域还是另外d出(需要保存原面板数据,然后用于恢复)。消息发送之后双方界面需要同步显示。不同好友聊天记录是否需要切换面板以及记录保存。待拓展功能:加好友,发送图片,文件等消息。
界面&功能设计细节
    发送:发送消息给服务器端——服务器转发给客户端。清空:清空输入区域(涂鸦板)。清空聊天记录:清空聊天记录区。涂鸦:选择涂鸦板。(选择一次转换发送消息的模式为涂鸦,再次转换关闭涂鸦模式)其他消息模式功能键。示意图:

 

【后续将不断补充+修正】

代码练习:

目前实现的部分是:

一个客户端和服务器端进行交流,暂时还没有实现服务器端的中转功能。

代码链接:

https://github.com/Biangbangbing/VMeeting/tree/v1.0

遇到的问题&解决方案:
    涂鸦板实现:另外开辟固定区域。(目前先避免缓存界面大量数据的复杂工作)开始没有在监听器的构造函数中判别UI传来的画笔的时候涂鸦总报画笔为空。(原因待解决)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5709164.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存