文档库 最新最全的文档下载
当前位置:文档库 › 聊天室的设计与实现

聊天室的设计与实现

聊天室的设计与实现
聊天室的设计与实现

Java 聊天室的设计与实现

学院:计算机学院

专业:

班级:

学号:

姓名:秦向红

指导老师:

2014年11月

(1)

Java 聊天室的设计与实现 (1)

学院:计算机学院 (1)

专业: (1)

班级: (1)

学号: (1)

姓名:秦向红 (1)

指导老师: (1)

2014年11月 (1)

Java 聊天室的设计与实现 0

1. 设计背景 0

2. 设计环境 0

3. 设计目的 0

4. Socket介绍 0

5. Socket的通信机制图: (2)

6.程序的设计 (3)

6.1服务器的设计 (3)

6.2客户端的设计 (6)

7. 测试及运行结果 (9)

7.1服务器的测试 (9)

7.2客户端的测试 (9)

8.设计总结 (12)

9. 参考文献 (13)

10.附代码 (13)

10.1服务器代码 (13)

10.2客户端的设计 (16)

Java 聊天室的设计与实现

1.设计背景

在互联网如此发达的今天,即时通信工具已经成为我们如常生活中必不可少的一部分。人们对网络的依赖越来越多,越来越离不开网络,而由此产生的聊天工具也越来越多,类似有QQ、MSN、、微信等,网络聊天使网络聊天系统发展的日新月异,由此产生制作了一个简单的聊天功能的网络聊天程序,由此此设计我还可以更好的学习网络软件的编程知识。

Java语言是当今流行的网络编程语言,它具有面向对象,与平台无关,安全,多线程等特点。使用java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进行应用程序的开发。面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和继承。

此次设计的题目为聊天室,可以巩固所学的java语言基础知识,增进java语言的编辑基本功,拓宽常用类库的应用,使我们通过教学环节与手段,把所学的课程及相关知识加以融会贯通,全面理解网络编程的含义。

2.设计环境

操作系统:Window 8

CPU:1.80GHz

内存:4.00GB

硬盘空间:80G

开发工具:JDK1.5、Eclipse

3.设计目的

聊天室虽然程序简单,但是在设计与实现的过程中能够充分学到基于Socket的网络编程的技术,使我掌握网络编程的服务的技术,能够充分利用我近期学到的java编程语言。实现聊天功能Client/Server的面向连接的编程技术。使用多线程进行多个客户端和服务器的连接,实现数据的读取与输入。

实现网络聊天系统的设计与实现,让我们掌握网络编程的服务的技术,让同学们更加深刻的了解,掌握这方面的知识

4.Socket介绍

Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet 上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。

Socket非常类似于电话插座。在这里,我以一个国家级电话网为例更加清楚的讲解一下Socket。电话的通话双方相当于相互通信的2个进程,区号是它的网络地址;区内一个

单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于Socket号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个Socket;同时要知道对方的号码,相当于对方有一个固定的Socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出网络地址)。假如对方在场并空闲(相当于通信的另一主机开机且可以接受连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向Socket发送数据和从socket接收数据。通话结束后,一方挂起电话机相当于关闭Socket,撤消连接。

在电话系统中,一般用户只能感受到本地电话机和对方电话号码的存在,建立通话的过程,话音传输的过程以及整个电话系统的技术细节对他都是透明的,这也与Socket机制非常相似。Socket利用网间网通信设施实现进程通信,但它对通信设施的细节毫不关心,只要通信设施能提供足够的通信能力,它就满足了。

抽象出来,Socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。在网间网内部,每一个Socket用一个半相关描述:(协议,本地地址,本地端口)。一个完整的Socket有一个本地唯一的Socket号,由操作系统分配。

最重要的是,Socket是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的Socket系统调用。客户随机申请一个Socket(相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫),系统为之分配一个Socket号;服务器拥有全局公认的Socket,任何客户都可以向它发出连接请求和信息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码)。Socket利用客户/服务器模式巧妙地解决了进程之间建立通信连接的问题。服务器Socket半相关为全局所公认非常重要。

根据传输数据类型的不同,Socket主要分为三类:

①流式Socket(SOCK—STREAM),在这种方式下,两个通讯的应用程序之间要先建立一种虚拟连接,提供可靠的、面向连接的通信流,它使用TCP协议,从而保证了数据传输的正确性和有序性。

②数据报Socket(SOCK—DGRAM),它使用数据报协议UDP,定义了一种无连接服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠、无差错。

③原始Socket,原始套接字允许对底层协议如IP或 ICMP直接访问,它功能强大但使用较为不便。主要用于一些协议的开发。

5.Socket的通信机制图:

6.程序的设计

6.1服务器的设计

1.新建一个Java项目用来实现服务器的设计

2.服务器主函数的创建,使用类TestServerSocket302

3.创建服务器的监听事件,使用类ServerListener02

相关文档