基于Socket网络聊天系统的设计与实现.docx
- 文档编号:2042945
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:33
- 大小:761.62KB
基于Socket网络聊天系统的设计与实现.docx
《基于Socket网络聊天系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Socket网络聊天系统的设计与实现.docx(33页珍藏版)》请在冰豆网上搜索。
基于Socket网络聊天系统的设计与实现
摘要
随着Internet的飞速发展,网络聊天以其操作简单、方便快捷、私密性好等优点已经迅速发展成为最普遍的网络交流方式之一,越来越受到人们的青睐,丰富了人们的网上生活。
开发并实现具有自身特色的网络聊天系统具有实际应用价值。
本网络聊天系统基于Java应用程序设计,以Client/Server为开发模式,以Eclipse为开发环境,以MySQL为后台数据库,利用JDBC连接数据库。
系统主要包括服务器模块和客户端模块,服务器模块能够对客户端发来的用户信息进行匹配、读取和转发;客户端模块能够进行注册、登录、聊天和文件传输。
系统不但实现了点到点的聊天,还利用Java提供的Socket类和多线程功能,在单个程序中同时运行多个不同进程,从而实现多点对多点的聊天。
总之,该聊天系统具有开放性,实时性,多话题交错等特点,方便了人们网上交流。
【关键词】网络聊天服务器模块客户端模块Socket
ABSTRACT
WiththerapiddevelopmentofInternet,networkchatwithitssimpleoperation,convenientandgondprivacyhasquicklybecomethemostpopularwayofcommunicationnetworks,moreandmorepeoplelikeit,enrichpeople'sonlinelives.DevelopmentandRealizationofthenetworkchatsystemwithitsowncharacteristicsandhaspracticalapplicationvalue.
TheInternetchatsystemisbasedonJavaapplication,designedbyClient/Serverasthedevelopmentofmodels,asEclipsedevelopmentenvironment,MySQLasthebackenddatabase,andusingJDBCtoconnectdatabase.Thesystemincludesservermodulesandclientmodules,servermodulecanmatchusers'data,readandforwardtheinformationwhichissentbyclient;clientmoduletoregist,login,chatandfiletransfer.Thesystemnotonlyachievespeer-to-peerchat,butalsousetheJavaprovidsSocketclassandmulti-threadingcapabilities,inasingleprogramrundifferentprocessesatthesametime,inordertoachievemultipointchat.
Inshort,thechatsystemisopen,real-timeandmulti-topicstaggeredfeatures,easyforpeopletocommunicateonline.
【Keywords】NetworkChatClientModuleServerModuleSocket
前言
随着互联网的快速发展,网络聊天软件以它的实时性、高效率和低成本的特质充当了信息交流的媒介,并逐渐成为网络商圈和生活商圈中不可或缺的组成部分[1]。
网络聊天工具实现了“沟通无极限”,它打破了办公室里上级与下级直接的等级限制,也打破了长辈与晚辈之间的时间限制,也打破了异地之间的距离限制。
同时人们对于网络聊天工具的友好的界面和快捷的操作方式也越来越高。
大家都知道,网络上最常用的交流工具是腾讯QQ,QQ来源于OICQ(openicq),ICQ是“Iseekyou”的简称,是“我找你”的意思。
QQ引用了ICQ的功能即即时通信,我们只要将对方加为好友,不管对方是否在线,我们都可以向对方发送信息,无论对方在哪里,只要登陆QQ,他就能够看到我们给他发的信息,我们就能够随时随地的和对方进行信息交流[2]。
随着网络聊天工具的不断完善,它的功能越来越多样化,由最初的文字交流发展成现在的视频、语音交流,同时也提供了文件的发送和共享功能。
其中不难发现,现在的网络聊天已经不再是一个简单的沟通工具,而是一个信息资讯、交流互动、娱乐的工具。
随着技术的发展,网络聊天工具具有即时性、高效性、安全性、功能上较强的延展性,能够提供方便、快捷的交流[3][4]。
本系统主要分析了网络聊天系统应该具备的功能、运行方式和实现方式,开发出一个基于Socket的网络聊天工具。
该系统主要实现功能包括:
注册、登录、聊天和文件的传输。
第一章系统开发工具简介
第一节客户机/服务器模型
一、C/S结构简介
客户机/服务器模型,又称为Client/Server模型,简称C/S架构[5]。
C/S计算技术在信息产业中占有重要的地位。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
客户端的任务是将用户的要求提交给服务器程序,再将服务器程序返回的结果以特定的形式显示给用户。
服务器程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。
二、C/S特点
C/S是客户端/服务器,一般适合于软件开发,对客户端的计算机配置要求比较高,客户端也需要安装软件,比如QQ。
C/S架构软件的特点如下:
应用服务器运行数据负荷较轻。
C/S体系结构由客户应用程序和数据库服务程序组成,二者分别称为前台程序和后台程序。
一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序当需要对数据库中的数据进行任何操作时,客户程序就会自动寻找服务器程序,并向其发出请求,服务器程序根据规程做出响应,返回结果,应用服务器运行数据负荷较轻。
数据的储存管理功能较为透明。
在数据库应用中数据的储存管理功能是由服务器程序和客户应用程序分别独立进行的。
前台应用可以违反的规则,并且通常把那些不同的运行数据,在服务器程序中不集中实现。
因此对于工作在前台程序上的最终用户是“透明”的,他们无须干涉背后的过程就可以完成自己的一切工作。
在C/S提醒体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。
第二节JAVA简介
Java是由SunMicrosystems公司于1995年5月推出的java程序设计语言和Java平台的总称。
用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:
跨平台、动态的Web、internet计算。
从此Java被广泛接受并推动力web的迅速发展,常用的浏览器限制均支持Javaapplet。
Java平台由Java虚拟机(JavaVirtualMachine)和Java应用编程接口(ApplicationProgrammingInterface,简称API)构成。
Java应用在编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。
在硬件和操作系统平台上安装一个Java平台之后,Java应用程序就可运行。
Java应用编程接口已经从1.1X版本发展到1.2版。
目前常用的Java平台基于Java1.4,最近版本为Java1.7。
Java分为三个体系J2SE(Java2StandardEdition),J2EE(Java2PlatformenterpriseEdition),J2ME(Java2MicroEdition)。
Java是一种具有简单性(Java语法是C++语法的一个“纯净”版本)、面向对象(面向对象是一种程序设计技术,它将重点放在数据和对象的接口上)、网络技能(Java有一个扩展的例程库,用于处理HTTP和FTP这类的TCP/IP协议)、健壮性、安全性(Java可以构建防病毒、防篡改的系统)、体系结构中立、可移植性、解释型、高性能、多线程的动态语言[6]。
Java的I/O建立于流(stream)之上。
输入流读取数据;输出流写入数据。
不同的流类如java.io.FileInputStream和.TeletOutputStream读写某一种数据源。
但是所有输入流都有相同的基本方法,所有输入流也使用相同基本方法来读取数据[7]。
Java中的数据流类型有两种:
输出流(OutputStream):
输出流数据流经数据从程序送到数据接收者,如可以向显示器屏幕或者文件传输数据。
输出流只能写不能读。
输入流(InputStream):
程序从外部设备写数据时,使用输入流。
输入流将数据从数据源传递给程序,可以从键盘或者文件中获得数据。
输入流只能读不能写。
第三节Socket简介
Socket通常被称为“套接字”,用于描述IP地址和端口[8]。
Socket是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范[9],Socket接口是TCP/IP网络的API。
在网络通信中,如果两台计算机之间是靠一个“通道”通信,那么这个“通道”的两端就是套接字。
Socket是传输层提供的网络进程通信接口,相当于我们现在所用的“插座”,是进程之间通信的抽象连接点。
在日常生活中,我们常见到信号插座、电话插座、接收/发送信号(或能量)的插座。
Socket就相当于在电话线和电话机之间安放的插座。
在网络上,两个程序是靠一个双向链路进行通信,这个双向链路的每一端就成为一个Socket。
进程之间通信,首先要需要建立一个自己的Socket,每个Socket都能进行读/写操作,进行读写操作时就会用到Socket中的输入/输出流[10]。
客户端建立Socket对象步骤:
1、调用Socket()创建一个流套接字,并连接到服务器端;
Sockets=newSocket(InetAddress.getByName(“服务器的主机名”),port);
2、调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。
OutputStreamos=s.getOutputStream();
InputStreamis=s.getInputStream();
byte[]buf=newbyte[100];
intlen=is.read(buf);//从服务器端读取数据
System.out.println(newString(buf,0,len));
os.write("Hello,thisisclient".getBytes());//向服务器端输入数据
3、最后关闭通信套接字。
os.close();is.close();s.close();
服务器端建立Socket步骤:
1、创建一个服务器端套接字,并绑定到指定端口上;
ServerSocketss=newServerSocket(intport),
2、调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。
Sockets=ss.accept();
3、调用Socket类的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Socket 网络 聊天 系统 设计 实现