毕业设计网
JSP,JAVA | python | nodejs | android,安卓 | PHP | 微信小程序 |

JAVA即时通讯工具(仿QQ)的设计与开发

基于Java语言和J2SE规范设计了一个即时通讯工具JICQ (Java for I seek you),并对其体系结构、构成模块及系统关键技术进行了分析与设计。在系统设计与建模过程中,使用了UML和面向对象的分析、设计方法,并使用Rose作为建模工具;本系统基于j2sdk1.6,使用Eclipse等作为开发工具,在开发过程中用到了时下流行的重构开发方法,优化了系统的设计。力图使系统具有安全、高效、实用、支持在不同系统平台运行等特点。

根据上述需求的描述,对该系统按照功能进行了模块的细化,主要包括注册登录、好友聊天、好友组管理、群聊天4个模块,还有很多其它小模块,这4个模块是实现该系统的核心模块,模块之间的耦合程度非常低

主要模块设计如下

登录模块设计
该模块主要给注册成功的用户提供一个登录界面,用户根据自己注册的帐号信息可以与服务器交互,如果提供的信息通过服务器的验证便可以成功的登录系统,成功登录系统之后,可以进行一些操作,比如和好友聊天等,使用该模块之前必须安装一个客户端。登录模块只是一个简单的界面,主要填写用户名、密码之类的信息,登录成功后的主界面包含了系统的大部分功能,比如添加和删除好友、添加和删除好友分组、和朋友聊天等功能。

用户间交互模块设计
该模块主要实现已用户之间的信息交流,用户交流的前提是先要添加好友,可以通过查找功能进行好友的查找,找到要添加的好友后,通过发送好友申请消息来添加好友,当对方通过添加好友的验证消息后,便可以成功的添加好友。只有成功的添加好友之后,才可以进行用户之间的信息的相互交互


服务器端监听与转发消息代码
下边是服务器端的监听程序,如果发现有socket连接,就创建一个与该连接所对应的一个线程,该线程主要用来处理用户之间的信息交互。

 while(true)   //始终监听状态
            {  
             Socket client=listen.accept();
                //创建用户线程
                PersonThread f=new PersonThread(client);
                f.setPriority(Thread.MIN_PRIORITY); 
                f.start();
               
            }

聊天客户端部分代码
下边是聊天客户端的核心代码,它用来判定消息的来源以及针对该消息所进行的相应的操作。
 JICQChatFrame jchatExist=null;
                  int isExistFrame=0;//判定聊天窗口是否已经打开
       for(int i=0;i<MyPersonTree.vector.size();i++) //遍历向量
        {
 jchatExist=(JICQChatFrame)MyPersonTree.vector.get(i);
          if(jchatExist.JICQ.equals(hisJICQ))
          {
           isExistFrame=1;//聊天窗口已经打开
           break; 
          }

服务端单线程上线处理代码
下边是服务器端上的单线程的处理代码,主要通过网络流来读取客户端发送的消息,然后将消息分解,用来区分消息的类型,譬如是群消息还是个人消息等。
//将读取的信息按照特定格式进行拆分
               StringTokenizer stk=new StringTokenizer(line,"#");   //PEOPLE+"#"+JICQ
                if(stk.hasMoreElements()) key=(String)stk.nextElement();
                //用户上线提示         
                if(key.equals("PEOPLE"))
                {  
                 try{   String JNUM=(String)stk.nextElement();
                    this.JICQ=JNUM;
                    for(int i=0;i<chatserverthree.connections.size();i++)
 {PersonThread tt=(PersonThread)chatserverthree.connections.get(i);                       if(tt.JICQ.equals(this.JICQ))
                   {
 chatserverthree.broadcast("RELOG#YES",tt.JICQ);
                    chatserverthree.connections.remove(i);
                    tt.stopThread();
                    break;
                   }}

 

以上是一部分介绍,如需要完整的资料或者如不符合您的要求,请联系技术人员qq:242219979咨询

上一篇:jsp网吧自动计费收费管理系统
下一篇:jsp足球迷用品销售网站


版权所有 毕业设计网联系qq:242219979 © 2007-2022