基于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
{
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
{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:58850198咨询