leasmen 2010-01-15 10:38
浏览 525
已采纳

java开发聊天系统的问题(毕业设计)

我打算用Java编写一个类似QQ的软件,包括PC的客户端,网站,服务器端,同时还有手机的wap网站和java版,我已经设计了一段时间,现开始从底层编写代码,用Hibernate和Spring对MySQL数据库的表和操作进行封装;通讯采用队列的方式,无论是服务器还是客户端,有收发两个队列进行控制,发送和接收的都是Message对象。登陆之后有一个tcp连接始终与服务器保持连接,直到离线或退出,其余的消息采用UDP的方式进行通讯,我将客户端的请求都封装在不同的Request类中,比如OnlineRequest,服务器端的回复都封装在不同的但相对应的Response的类中,比如OnlineResponse,同时有处理相应Request和Response的类,比如OnlineRequestMgr,OnlineResponseMgr等,Request和Response分别是不同的抽象类,但都继承自Message接口,通讯类Communication负责初始化TCP连接和收发UDP包,将UDP包中的Message放入相应的队列。一般来说Request由Response对其进行确认,但对于特殊情况,比如由服务器直接发起的Response,比如被添加好友时的确认信息,需要有一个MessageACK类来对其确认。这些协议的加载和处理都是动态的,只要有相应的class文件就可以自动加载并处理,这样可扩充性就比较好。在安全方面,我想的是在用户建立TCP连接后,先将用户的IP地址和TCP端口号记录下来,然后再根据之后发送的UDP包:LoginRequest,将UDP端口也记录下来,这样就完成了用户ID与IP地址,TCP,UDP端口的绑定,服务器将拒绝为同一个ID但其余信息不同的主机提供服务。目前底层的设计和代码编写就到这里,我想问的问题是:我的思路有没有比较严重的问题,目前聊天系统的整体架构是什么?我编写的协议的思路是否正确,可行?我感觉服务器端的压力会比较大,主要是接受连接,解析Request和查询数据库,有没有提高效率的方法?如果网站需要用到这些底层组件,应该怎么复用,采用EJB吗?Hibernate是轻量级的数据库持久层框架,能承受多少压力?对于聊天系统应该考虑的安全问题,有什么好的建议?Java对于开发语音和视频的支持怎么样,能否达到QQ的水平?另外要说明的是我并非开发商用软件,编写这个软件的目的是为了学习,本人还是在校学生,对Java很感兴趣^_^。希望大家不吝赐教

  • 写回答

6条回答 默认 最新

  • andilyliao 2010-01-15 10:51
    关注

    个人感觉:
    我觉得你应该先评估一下你的量 有没有时间把你定义的东西都完成 我觉得没有必要把东西作的这么全 这些可能能说明你学的东西不少 但是也能说明你对项目的把握能力和控制能力偏差 个人觉得毕业设计时间不是很多 你能完成这么多东西吗?? 你的风险都是怎么分析和控制的?? 会不会说的比较大但是最后作的却并不尽人意呢??
    个人建议:
    客户端用.net完成 或者用flex完成 因为这些东西对视频作的比较好 java做这个确实麻烦。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题