局域网内即时通讯系统的设计与实现.docx
《局域网内即时通讯系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《局域网内即时通讯系统的设计与实现.docx(30页珍藏版)》请在冰豆网上搜索。
局域网内即时通讯系统的设计与实现
摘要
互联网诞生于传统的电话网络,通讯交流可以说是互联网天然的应用之一。
Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。
随着网络通信技术和计算机技术的进一步发展,即时通信正在成为网络在线活动中不可缺少的业务。
近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。
Socket是TCP/IP协议的编程接口,利用Socket提供的一组API就可以编程实现TCP/IP协议。
本文论述了使用J包与Java.awt包提供的类和接口,开发了一款即时通讯系统“LanMessage”,可实现点对点的文字聊天、群发消息、文件传输等功能,经测试,系统基本达到预期的设计目标。
关键词:
Java,局域网,即时通讯,TCP/IP
ABSTRACT
InternetwasborninthetraditionaltelephonenetworkwhilecommunicationexchangecanbesaidoftheInternetnaturalone.Internetisnowtheworld'slargestcomputerInternet,itspreadglobally,ofallsizesaroundtheworldconnectstothenetworkasawhole.Withthenetworkcommunicationtechnologyandthefurtherdevelopmentofcomputertechnology,instantcommunicationnetworkonlineactivitiesarebecomingindispensabletobusiness.Inrecentyears,computertechnologyisdevelopingrapidly,inparticularthedevelopmentofcomputernetworks,increasinglyprofoundchangesinallaspectsofpeople'slives.
SocketistheProgrammingInterfaceofTCP/IP,namelyusingasetofAPI,offeredbySocket,programmingtorealizeTCP/IP.ThispapertakesuseoftheclassandinterfaceofJpacketsandJava.awtpacket,usingJDK6.0.developedinstantcommunicationssoftware"LanMessage."Thesoftwareincludeclient,theclienthasageneralcommunicationssoftwarefunctions,including:
point-to-pointtextchatfunction,filetransferfunction,Massfunction,Aftertestingthebasicsystemdesigntoachievethedesiredobjectives.
Keywords:
Java,Lan,Instantcommunication,TCP/IP
第1章引言
随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:
信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。
因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。
因此出现了QQ等聊天工具,然而QQ等聊天工具虽然方便、实用,但是,娱乐功能太多,有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不能作为用于即时通讯、文件共享的专用工具[1]。
目前,用于实现单一的即时通讯、文件共享的软件实在太少,而且,它们中大部分都是绝对的C/S模式,对远程服务器有非常大的依赖性,对应用有着很大的局限性,没有彻底实现点对点的交流。
为此,决定开发一个专用于实现两台计算机或者多台计算机之间即时通讯、文件共享的传输,以方便两台或者多台计算机之间信息的交流。
本软件属于点对点连接的,在连接并通信时,尤其是近程的即时通讯,彻底的脱离了远程的服务器,避免了和远程服务器连接时过多的浪费网络资源。
并且避免了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接。
因此,这个软件是极具适应性和实用性的即时通讯软件。
1.1背景
电子邮件就是最重要的通讯交流工具,是互联网最早的通讯交流工具。
此后兴起的网络论坛和网络聊天室都是网络聊天的前身。
但是,个人对个人的网络聊天真正崛起还是需要从ICQ的开始。
ICQ产品最早的创始人是三个以色列青年,是他们在1996年做出来的,取名叫ICQ。
1998年当ICQ注册用户数达到1200万时,被AOL看中,以2.87亿美元的天价买走。
目前ICQ有1亿多用户,主要市场在美洲和欧洲,已成为世界上最大的即时通信系统。
这是一款网络即时讯息传呼软件,支持在互联网上面各种聊天、发送文件等功能。
在网络无所不在的今天,在Internet上,有QQ等网上寻呼软件,极大程度上方便了处于在世界各地的友人之间的相互联系,也使世界好像一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发信息,不管对方是否也同时在线,只要知道他有号码。
网上寻呼软件在国外的有ICQ等,在国内的主要有腾讯的Oicq,还有Ticq,OmO和一些在网页上的即时通讯工具,像Chinaren网站上的WebMaster等等,都做得即美观,且功能强大,Oicq(QQ)非常大的用户群。
目前全球已有20%的企业采用IM进行信息通信和文件共享。
据权威人士预瞻,到2008年,全球将有80%的企业会采用即时通信软件来代替费用高昂的电话、传真等通信方式。
这将是一个非常庞大的市场和财富。
强大的网络聊天工具如QQ,MSN等软件占据了一定是市场,俨然成为当今社会人们主流的联系方式。
但是这些聊天工具虽然方便、实用,但是,有个最不好的确定就是功能太多,有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不能作为用于作为即时通讯、文件共享的专用工具。
而也有很多企业与公司都把QQ,MSN作为公司内部禁止使用的软件之一。
这样必然会造成一个问题就是,当公司或者企业内部人员需要相互交流或者传输资料文件的时候,必须采用最原始的办法,用U盘相互拷贝,对文件以及电脑有着极大的危害。
所以,我想设计一个能用于局域网之间的用来完成点对点通讯与传输文件的即时通信软件工具。
即时通信,是以Internet网络及其它有线、无线网络为基础,实现交互双方文字、文件、语音等信息实时传送的通信过程。
目前,用于实现这种单一的即时通讯、文件共享的软件实在太少,并且,它们中大部分都是的C/S模式,对远程服务器有非常大的依赖性,没有彻底实现点对点的交流。
为此,我选择这一课题,并且决定所开发的软件应属于点对点连接的,这样在连接并通信时,尤其是近程的即时通讯,可以彻底的摆脱对远程的服务器的依赖,避免和远程服务器连接时过多的浪费网络资源。
同时还可以避免服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接!
因此我基本上确定了开发的目标和方向。
1.2JAVA以及相关技术
1.2.1Java的由来与定义
在Java出现以前。
Internet上的信息内容都是一些乏味死板的HTML文档。
这对于那些迷恋于WEB浏览的人们来说简直不可容忍。
他们迫切希望能在WEN中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。
对于用户的这种要求,传统的编程语言显得无能为力,面SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本[2]。
Java是一种简单的,面象对象的,分布式的,解释的,键壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。
Java的开发环境有不同的版本,如sun公司的JavaDevelopersKit,简称JDK。
Java的特点如下
1)平台无关性
平台无关性是指Java能运行于不同的平台。
Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。
使用Java编写的程序能在世界范围内共享。
Java的数据类型与机器无关,Java虚拟机(JavaVirtualMachine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。
2)安全性
Java的编程类似C++,学习过C++的读者将很快掌握Java的精髓。
Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。
Java对程序提供了安全管理器,防止程序的非法访问。
3)面向对象
Java吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。
类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。
程序员只需把主要精力用在类和接口的设计和应用上。
Java提供了众多的一般对象的类,通过继承即可使用父类的方法。
在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。
Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。
4)分布式
Java建立在扩展TCP/IP网络平台上。
库函数提供了用HTTP和FTP协议传送和接受信息的方法。
这使得程序员使用网络上的文件和使用本机文件一样容易。
5)键壮性
Java致力于检查程序在编译和运行时的错误。
类型检查帮助检查出许多开发早期出现的错误。
Java自已操纵内存减少了内存出错的可能性。
Java还实现了真数组,避免了覆盖数据的可能。
这些功能特征大大提高了开发Java应用程序的周期。
Java提供:
Null指针检测、数组边界检测、异常出口、Bytecode校验。
1.2.2Socket
所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。
应用程序通常通过“套接字”向网络发出请求或者应答网络请求[3]。
Socket和ServerSocket类库一般位于J包中。
ServerSocket用于服务器端,Socket是建立网络连接时使用的。
在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。
对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。
不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
1.2.3Java编译工具NetBeans
NetBeans由Sun公司在2000年创立,它是开放源运动以及开发人员和客户社区的家园,旨在构建世界级的JavaIDE。
NetBeans当前可以在Solaris、Windows、Linux和MacintoshOSX平台上进行开发,并在SPL(Sun公用许可)范围内使用。