即时聊天系统QQ项目研发与实现毕业设计论文.docx
《即时聊天系统QQ项目研发与实现毕业设计论文.docx》由会员分享,可在线阅读,更多相关《即时聊天系统QQ项目研发与实现毕业设计论文.docx(48页珍藏版)》请在冰豆网上搜索。
即时聊天系统QQ项目研发与实现毕业设计论文
课题名称即时聊天系统QQ项目研发与实现
摘要
随着信息技术的飞速发展,人们在工作中对即时聊天,文件传输的使用和需求越来越多。
现有的商用QQ和MSN等聊天软件娱乐性很强,源代码不明确,信息安全性无法保障,软件本身作为第三方软件不便管理。
从技术层面上说单纯的即时聊天软件结构简单,功能模块不多,因此很多公司自行研发此类软件供内部使用。
聊天工具作为计算机的应用之一,受到了用户的普遍爱好,它把人们带进了一个虚拟的网络世界,大大加深了人们之间的联系,从单一的文本聊天,到语音聊天以及到现在的图像、视频聊天、即时短信的发送和在线游戏等功能的开发,已经大大的拓展了聊天工具的概念,它将会作为未来人们通过因特网相互联系和娱乐的主要平台。
我的毕业设计所开发的是基于Java+SQLServer2005的即时聊天系统QQ项目研发与实现,这个工具有利于人们的信息交流。
实现企业局域网通讯的目的就是使人们之间的信息交流更加省时、方便。
这个工具可以使局域网内部人员实现聊天功能。
它无需连入国际互联网,设计选用Eclipse开发环境和MicrosoftSQLServer2005数据库。
本系统采用C/S(客户端和服务器)模式,该项目主要采用Socket对象来实现客户端和服务器端之间的通信。
通过对聊天工具的开发,能了解计算机如何通过网络互相通信以及在此相互通信的基础上实现的应用程序级的协议。
关键词:
即时聊天;局域网;客户端;服务器端;Socket对象
Abstract
Withtherapiddevelopmentofinformationtechnology,peopleintheworkofinstantmessaging,filetransferanddemandmoreandmore.ExistingcommercialQQandMSNchatsoftware,suchasentertainmentisverystrong,thesourcecodeisnotclear,informationsecuritycan'tguarantee,inconvenientmanagementsoftwareitselfasathirdpartysoftware.
Fromatechnicallevelpureinstantmessagingsoftwarestructureissimple,functionmodules,somanycompaniestodevelopsuchsoftwareisforinternaluse.Chattoolsasoneoftheapplicationofcomputer,theuser'scommoninterests,itbringpeopleintoavirtualworld,greatlydeepenedtheconnectionsbetweenpeople,fromasingletextchat,voicechat,andtopresentimages,videochat,instantmessaging,sendandtothedevelopmentofonlinegamesandsoon,havegreatlyexpandedtheconceptofchattool,itwillbethefuturepeopleconnectwitheachotherthroughtheInternetandentertainmentthemainplatform.
MygraduationdesigndevelopmentisbasedonJava+SQLServer2005QQinstantmessagingsystemprojectdevelopmentandimplementation,thistoolishelpfulforpeople'scommunication.Achievethepurposeoftheenterpriselocalareanetwork(LAN)communicationbetweenpeopleistomaketheinformationcommunicationmoretime-savingandconvenient.Thistoolcanmaketheinternalstaffrealizethechatfunction.ItneednotconnectedtotheInternet,thedesignistochoosetheEclipsedevelopmentenvironmentandMicrosoftSQLServer2005database.ThissystemUSESC/S(clientandserver)mode,theprojectmainlyUSEStheSocketobjecttoimplementthecommunicationbetweentheclientandserver.Throughthechattooldevelopment,canunderstandthecomputerhowtocommunicatewitheachotherthroughthenetworkandtocommunicatewitheachotherintheimplementationonthebasisoftheapplicationlevelprotocol.
Keywords:
Instantmessaging;Localareanetwork(LAN);Theclient;Theserverside;TheSocketobject
第1章绪论
1.1本课题的开发背景及意义
随着信息技术的飞速发展,人们在工作中对即时聊天,文件传输的使用和需求越来越多。
现有的商用QQ和MSN等聊天软件娱乐性很强,源代码不明确,信息安全性无法保障,软件本身作为第三方软件不便管理。
从技术层面上说单纯的即时聊天软件结构简单,功能模块不多,因此很多公司自行研发此类软件供内部使用。
聊天工具作为计算机的应用之一,受到了用户的普遍爱好,它把人们带进了一个虚拟的网络世界,大大加深了人们之间的联系,从单一的文本聊天,到语音聊天以及到现在的图像、视频聊天、即时短信的发送和在线游戏等功能的开发,已经大大的拓展了聊天工具的概念,它将会作为未来人们通过因特网相互联系和娱乐的主要平台。
此次设计从实际工程应用的角度出发,以计算机网络原理为指导,结合当前网络中的一些常用技术,编程实现基于java的网络聊天工具。
本项目是作为本人本科的毕业设计课题提出来的,它规模适中,适合于个人开发,能够锻炼学习新知识能力,锻炼编程能力,锻炼软件工程思维方式。
通过对聊天工具的开发,能了解计算机如何通过网络互相通信以及在此相互通信的基础上实现的应用程序级的协议。
1.2课题研究内容
本设计主要应用Java网络编程、C/S架构开发模式以及SQLServer2005数据库连接等相关知识。
需要熟练掌握C/S架构模式下的开发技术,将所学知识应用于实际的生活中,并且在实际生活中发挥其主要功能并获得效益。
本设计内容包括以下功能模块。
(1)QQ服务器端模块:
主要包括服务器端启动、服务器连接数据库、服务器连接客户端线程、服务器操作数据库等。
(2)QQ客户端模块:
主要包括QQ客户端登录验证、好友列表、聊天界面、用户好友在线提示、客户端连接服务器端线程等。
1.3设计组织结构
本毕业设计的主体主要分为六大部分。
第一部分:
即绪论部分,主要介绍了毕业设计(论文)的开发背景意义、研究内容、组织结构等内容。
第二部分:
开发工具及相关技术,主要介绍本毕业设计中所用的开发软件、运行环境,以及开发过程中所需要的结构体系等要素。
第三部分:
介绍整个系统的可行性分析以及功能需求等内容。
第四部分:
介绍数据库的基本数据表结构设计。
第五部分:
根据需求分析整个系统的构架并陈列主要功能模块。
第六部分:
详细讲解了各个功能模块的实现过程和运行结果。
第2章开发工具及相关技术
2.1常用开发工具
2.1.1Eclipse简介
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect,它构成了IBMJava开发工具系列的基础。
Eclipse开发工具界面如图2-1所示:
图2-1Eclipse开发工具界面
2.2运行环境
2.2.1JDK简介
JavaDevelopmentKit(JDK)是Sun公司专门为Java程序员开发的免费软件开发工具包(SoftwareDevelopmentKit,SDK)。
自从Java语言问世以来,JDK成为应用最为广泛的软件开发工具包。
此外,还可以使用OpenJDK进行开发。
对于程序开发人员,必须使用JDK进行开发调试。
对于普通用户,仅需要安装JRE来运行Java程序。
在Oracle官方网站下载的JDK文件名如jdk-7u45-windows-i586。
其中jdk表示JDK;7表示主版本号;u45表示该主版本号下的45个更新版本;windows表示JDK版本使用windows系统;i586表示处理器类型。
JDK安装完成后文件夹结构如图2-2所示:
图2-2JDK安装完成后文件夹结构
bin文件夹包含各种命令,例如javac命令可以将Java源代码编译成class文件;java命令可以运行class文件;jar命令可以将相关的类文件进行打包;javadoc命令用于从源代码中提取说明文档等。
src压缩文件包含了JavaSEAPI的源代码。
2.2.2MicrosoftSQLServer2005数据库简介
MicrosoftSQLServer是一个关系型数据库管理系统。
它最初是由MicrosoftSybase和Ashton-Tate公司共同开发的,于1988年推出了第一个QS/2版本,后期逐渐推出MicrosoftSQLServer2000、MicrosoftSQLServer2005等版本,目前较为流行的是MicrosoftSQLServer2005.
MicrosoftSQLServer2005是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。
MicrosoftSQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的高可用和高性能的数据应用程序。
MicrosoftSQLServer2005结合了分析、报表、集成和通知功能。
这使企业可以构建和部署经济有效的BI解决方案,帮助团队通过记分卡、Dashboard、Webservices、和移动设备将数据应用推向业务的各个领域。
MicrosoftSQLServer2005数据库界面如图2-3所示:
图2-3MicrosoftSQLServer2005数据库界面
使用Java开发即时聊天系统QQ项目相对简单,只需要正确安装JDK、Eclipse和MicrosoftSQLServer2005数据库即可。
2.3相关技术
2.3.1Java网络编程原理
Java语言实在网络环境下诞生的,所以Java语言虽然不能说是对于网络编程的支持最好的语言,但是必须说是一种对于网络编程提供良好支持的语言,使用Java语言进行网络编程是一件比较轻松的工作。
Java语言网络编程原理如图2-4所示:
图2-4Java语言网络编程原理
(1)客户端程序:
importjava.io.*;
import.*;
publicclassTalkClient{
publicstaticvoidmain(Stringargs[]){
try{
Socketsocket=newSocket("127.0.0.1",4700);
//向本机的4700端口发出客户请求
BufferedReadersin=newBufferedReader(new
InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
PrintWriteros=newPrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReaderis=newBufferedReader(newInputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
Stringreadline;
readline=sin.readLine();//从系统标准输入读入一字符串
while(!
readline.equals("bye")){
//若从标准输入读入的字符串为"bye"则停止循环
os.println(readline);
//将从系统标准输入读入的字符串输出到Server
os.flush();
//刷新输出流,使Server马上收到该字符串
System.out.println("Client:
"+readline);
//在系统标准输出上打印读入的字符串
System.out.println("Server:
"+is.readLine());
//从Server读入一字符串,并打印到标准输出上
readline=sin.readLine();//从系统标准输入读入一字符串
}//继续循环
os.close();//关闭Socket输出流
is.close();//关闭Socket输入流
socket.close();//关闭Socket
}catch(Exceptione){
System.out.println("Error"+e);//出错,则打印出错信息
}
}
}
(2)服务器端程序:
importjava.io.*;
import.*;
importjava.applet.Applet;
publicclassTalkServer{
publicstaticvoidmain(Stringargs[]){
try{
ServerSocketserver=null;
try{
server=newServerSocket(4700);
//创建一个ServerSocket在端口4700监听客户请求
}catch(Exceptione){
System.out.println("cannotlistento:
"+e);
//出错,打印出错信息
}
Socketsocket=null;
try{
socket=server.accept();
//使用accept()阻塞等待客户请求,有客户
//请求到来则产生一个Socket对象,并继续执行
}catch(Exceptione){
System.out.println("Error."+e);
//出错,打印出错信息
}
Stringline;
BufferedReaderis=newBufferedReader(newInputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
PrintWriteros=newPrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReadersin=newBufferedReader(newInputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
System.out.println("Client:
"+is.readLine());
//在标准输出上打印从客户端读入的字符串
line=sin.readLine();
//从标准输入读入一字符串
while(!
line.equals("bye")){
//如果该字符串为"bye",则停止循环
os.println(line);
//向客户端输出该字符串
os.flush();
//刷新输出流,使Client马上收到该字符串
System.out.println("Server:
"+line);
//在系统标准输出上打印读入的字符串
System.out.println("Client:
"+is.readLine());
//从Client读入一字符串,并打印到标准输出上
line=sin.readLine();
//从系统标准输入读入一字符串
} //继续循环
os.close();//关闭Socket输出流
is.close();//关闭Socket输入流
socket.close();//关闭Socket
server.close();//关闭ServerSocket
}catch(Exceptione){
System.out.println("Error:
"+e);
//出错,打印出错信息
}
}
}
2.3.2JDBC连接数据库
JDBC连接数据库是每一门编程语言的重中之重,因为我们所处的社会随时都会跟数据打交道,因此连接数据库是我们编程中必须做的任务之一。
JDBC连接SQL数据库代码如下:
packagejdbc.test;
importjava.sql.*;
publicclassTest{
publicstaticvoidmain(String[]srg){
StringdriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
//加载JDBC驱动
StringdbURL="jdbc:
sqlserver:
//localhost:
1433;DatabaseName=mytest";
//连接服务器和数据库mytest
StringuserName="sa";//默认用户名
StringuserPwd="xushouwei";//密码[]
ConnectiondbConn=null;
Statementstmt=null;
try{
Class.forName(driverName);
dbConn=DriverManager.getConnection(dbURL,userName,userPwd);
stmt=dbConn.createStatement();
System.out.println("ConnectSucceed!
");
//连接成功控制台输出语句
ResultSetrs=stmt.executeQuery("select*frommytest");
while(rs.next()){
System.out.print(rs.getInt
(1)+""+rs.getString
(2)+""
+rs.getString(3)+"\n");
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
2.3.3JDBC操作数据库
一个项目的建立离不开与数据库打交道,对数据库实现各种操作(如:
增、删、改、查)