cess, the use of multi-threading technology, which can process in a single run at the same time a number of different threads, the implementation of different tasks. Procedures greatly enhanced the use of server resources.
Chat system will allow people to complete chat to more friends,and the system can add, delete somebody,can deal with new user registration, send messages, receive messages and so on.
Key
words : Multithreading ; Client/Server ;JAVA ;Socket ;Eclipse ;TCP/IP
目 录
1 绪论 1
1.1国内外聊天系统的研究现状 1
1.2 JAVA语言 2
1.2.1 Java的发展历史 2
1.2.2 Java的特点 3
1.2.3 Java与Internet 4
1.3 SOCKET编程 4
1.3.1 关于TCP/IP协议 4
1.3.2 服务器和客户机 5
1.4本文内容安排 6
2 需求分析 7
2.1 可行性研究 7
2.1.1 可行性分析 7
2.1.2系统功能需求 7
2.1.3 系统性能需求 8
2.1.4 系统运行需求 8
2.2 数据流图 8
2.2.1 顶层数据流图 8
2.2.2 一层数据流图 9
2.2.3 二层数据流图 9
3 概要设计 11
3.1系统实现原理 11
3.2 系统实现层次图: 12
3.3各模块详细功能 12
3.3.2服务器端结构 12
3.3.2 客户端结构 14
4 详细设计 19
4.1 系统流程图 19
4.1.1 系统总体流程图 19
4.1.2 系统客户端流程图 20
4.2 编写服务器端程序 20
4.2.1
问题陈述 20
4.2.2 解决
方案 21
4.3客户端程序编写 28
4.3.3 聊天室 38
参考文献 46
致谢 45
1 绪论
1.1国内外即时通讯系统的研究现状
目前国内外做即时通讯软件的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为Live Messenger)以及跨平台Gaim等。本人取最具代表性的QQ和MSN进行了一些研究,作为我开发即时通讯的准备。
腾讯无疑是国内即时通讯市场的霸主,自从99年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的时常占有率依然稳步增长。腾讯的成功与其对QQ的不断创新和完善是分不开的。
参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。可以确定腾讯QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直连通信的。并且在两个客户端之间不能建立直连的情况下,才由服务器进行中转通信。
其模型如图1-1
图1-1 腾讯QQ服务器-客户端模型1
与腾讯QQ不同,微软的MSN Messenger只使用了TCP作为传输层通
信协议,所有客户端与服务器进行连接,然后通过与服务器的TCP连接进行中转通信。
其模型如图1-2
图1-2 MSN服务器-客户端模型2
腾讯使用的模型中,服务器主要处理客户端各种状态的控制,可以极大减轻服务器的处理压力,但其内部协议和实现复杂度都较高。而MSN Messenger所有数据都要经过服务器,所以服务器方的数据量会大一些(这也是平时很少见到使用MSN进行语音视频聊天的)。
综合腾讯QQ和微软MSN Messenger的特点和我所学专业技术范畴,我打算在我的系统中尝试建立MSN的服务器-客户端模型,但以单服务器提供服务。
1.2 Java语言
1.2.1 Java的发展历史
Java的发展历史,可以追朔到1990年。当时Sun Microsystem公司为了发展消费类电子产品进行了一个名为Green的项目计划。这个计划的负责任是James Gosling。起初他用具有面向对象特征的C++语言编写嵌入式软件,可以放在面包机或PDA(Personal Digital Assistant,个人数字主力)等小型电子消费这杯里,以使设备变得更为"聪明",更具备人工只能。但后来发现C++并不适合这类任务;因为C++常会使系统失效。尤其在内存管理方面,c