硅谷杂志:企业即时通系统设计与实现分析 |
2012-08-09 11:03 作者:王 旭 来源:硅谷网 HV: 编辑: 【搜索试试】
|
|
硅谷网8月9日消息 《硅谷》杂志2012年第13期刊文称,企业即时通系统用到局域网通信机制原理,通过直接的延续Thread类来建立的多线程。开发中利用电脑网络编程的基本理论和知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方案等。网络编程过程中对信息的读取、发送,利用流来实现信息的交换。
根据当前网络的需求,网络聊天越来越受各种网民所青睐。企业即时通(CorperationMessager)是一款供企业、学校或公司内部使用的即时通讯工具,主要是提供给拥有单位内部网络的单位使用,用于员工之间的即时通信与交流。它不仅使公司员工之间的交流和沟通变的方便快捷,还充分利用了内网的资源,保证了内部信息的安全性。它主要是由服务器一端的程序和客户端的程序两部分组成的,整体采用Java平台技术进行开发,用户数据选用了MicrosoftSQLServer2000进行统一管理。因是企业内部使用,为了保证用户身份有效性,所有用户的基本信息统一由此软件的服务器端程序进行管理,客户端程序不用向客户提供申请注册功能。所以,该软件不适合在Internet上使用。其系统设计与实现需要以下设计。
1系统环境
本系统开发运行所需用到的环境为:
硬件配置:CPU主频≥2.4GHz、内存≥512MB
软件环境:Windows2000企业版+SP4、NetBeans5.0IDE、JDBCDriverForSQLServer2000、JDK1.5.0、SQLServer2000企业版。
2架构设计
“企业即时通”软件采用基于C/S模式的三层架构体系。
三层架构包括:客户层、服务层、数据层
客户层:即客户端应用程序。它的作用主要是验证客户端提交给服务器的数据、显示服务器传递至客户端的数据、它不提供任何业务处理过程。
服务层:服务层也称业务层,主要提供具体的业务处理逻辑。业务逻辑并没有一个准确的定义,一般可以理解为基于某个功能实现的处理规则。例如验证用户提供的登录账号。
数据层:数据层为应用程序提供数据存储和数据访问服务。本案例中使用MicrosoftSQLServer2000充当数据层。
3功能实现
要实现企业即时通系统,首先要实现的是网络的连接与通讯,本系统是用JAVA语言提供的Socket类来开发的。[1]
3.1Socket网络的编程
Socket也称“套接字”,是用来描述IP地址和端口号的。应用程序通过Socket向网络发出请求或接收网络应答。Java语言提供的Socket类用于开发网络应用的程序。
Sockets=newSocket("127.0.0.1",8000);
//createSocketobject
OutputStreamos=s.getOutputStream();
//Writetothestream.
InputStreamis=s.getInputStream();
//Readfromthestream.
os.close();
is.close();
s.close();
ServerSocketserver=newServerSocket(8000);
while(true){
Sockets=server.accept();
//创建监听
OutputStreamos=s.getOutputStream();
//Writetothestream.
InputStreamis=s.getInputStream();
//Readfromthestream.
}
os.close();
is.close();
s.close();
3.2数据库连接操作
本系统的数据管理是通过JDBC连接SQLServer2000数据库来实现的。JDBC是Sun为开发数据库应用程序提供的统一接口。JDBC是一组类,这些类提供了访问数据库数据的一系列方法。[2]主要包括:
1)调用Class的forName方法注册JDBC驱动程序;
2)调用DriverManager的getConnection方法得到Connection类的实例;
3)调用Connection类的方法的createStatement方法得到Statement类的实例;
4)调用Statement类的excuteQuery方法执行数据查询或调用excuteUpdate方法执行数据更新操作;
5)关闭Connection连接对象,释放与数据库操作相关的所有资源。
例如:
//创建连接并查询出结果集
Class.forName(“jdbc:odbc:JdbcOdbcDriver”);
Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
Connectionconn=DriverManager.getConnection(“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=”,”sa”,”sa”);
Statementstmt=conn.createStatement();
Stringsql1=“select*fromtablename”
Stringsql2=“insertintotablenamevalues(value1,value2,value3,…)”;
ResultSetrs=stmt.excuteQuery(sql1);
intresult=stmt.excuteUpdate(sql2);
……
//处理结果集数据
……
//关闭连接
Try{
if(rs!=null){rs.close();}
if(stmt!=null){stmt.close();}
if(conn!=null){conn.close();}
}catch(SQLExceptionex){ex.printStackTrace();}
3.3创建消息侦听线程
侦听线程类的作用:侦听客户端的连接请求;处理客户端的登录请求;处理服务器的关闭请求[3]
publicvoidrun(){
while(serverSocket!=null
&&!serverSocket.isClosed()){
try{
Socketsocket=serverSocket.accept();
//获取一个接收客户端消息的对象
BufferedReaderin=newBufferedReader(new
InputStreamReader(socket.getInputStream()));
//获取一个向客户端发送消息的对象
PrintWriterout=newPrintWriter(
socket.getOutputStream());
//接收客户端的消息
StringmsgString=in.readLine();
if(msgString.equals("上线")){
msgString=in.readLine();
System.out.println(msgString+"上线了!");
//向客户端返回确认消息头
out.write("连接成功\n");
out.flush();
out.write("欢迎你!"+msgString+"\n");
out.flush();
}
}
catch(IOExceptionioe){
ioe.printStackTrace();
(原文载于《硅谷》杂志2012年第13期,硅谷网及《硅谷》杂志版权所有,未经允许禁止转载)
|
|
|
|
【对“硅谷杂志:企业即时通系统设计与实现分析”发布评论】 |
版权及免责声明:
① 本网站部分投稿来源于“网友”,涉及投资、理财、消费等内容,请亲们反复甄别,切勿轻信。本网站部分由赞助商提供的内容属于【广告】性质,仅供阅读,不构成具体实施建议,请谨慎对待。据此操作,风险自担。
② 内容来源注明“硅谷网”及其相关称谓的文字、图片和音视频,版权均属本网站所有,任何媒体、网站或个人需经本网站许可方可复制或转载,并在使用时必须注明来源【硅谷网】或对应来源,违者本网站将依法追究责任。
③ 注明来源为各大报纸、杂志、网站及其他媒体的文章,文章原作者享有著作权,本网站转载其他媒体稿件是为传播更多的信息,并不代表赞同其观点和对其真实性负责,本网站不承担此类稿件侵权行为的连带责任。
④ 本网站不对非自身发布内容的真实性、合法性、准确性作担保。若硅谷网因为自身和转载内容,涉及到侵权、违法等问题,请有关单位或个人速与本网站取得联系(联系电话:01057255600),我们将第一时间核实处理。
|
|
|
|