河南理工大学本科生毕业设计(论文)说明书
第一次握手,主机A向主机B发送连接请求 ACK=1 第二次握手,主机B收到主机A的请求,向主机A回发一个确认,,同时向主机A发送一个连接请求 主机A 主机B
图2-2 三次握手
SYN=1,SEQ=0 ACK=1,SYN=1,SEQ=0 第三次握手,主机A收到主机B发送的数据包在向主机B发送一个确认连接 (1)套接字客户端:
所谓的客户端/服务器。是一种能够在基于网络环境的分布处理过程中,使用基于连接的网络通信模型。该通信模型首先在客户机和服务器之间定义一套通信协议,并创建一个Socket类,利用这个类来建立一条可靠的链接;然后,客户端/服务器再在这条连接上可靠地传输数据。客户端发出请求,服务器监听来自客户机的请求,为客户端提供响应服务。 利用Socket类,我们可以轻松地实现网络客户端程序的编写。通常能够情况下,客户端只要能够顺序地处理服务器程序的响应就可以了,因此客户端程序通常不用使用多线程。
(2)套接字服务端:
要实现套接字的服务端,需要使用ServerSocket类。ServerSocket类是服务器程序的运行基础,它允许程序绑定一个端口等待客户端的请求,一旦产生客户端请求,它就接受这一请求,同时产生一个完整的Socket连接对象。服务器绑定的端口号必须公开,以便让客户端程序知道如何连接这个服务器。同时,作为服务器,他必须能够接收多个客户的请求,这就需要为服务器设置一个请求队列,如果服务器不能马上响应客户端的请求,
11
河南理工大学本科生毕业设计(论文)说明书
要将这个请求放进请求队列中,等服务器将当前的请求处理完,会自动到请求队列中按照先后顺序取出请求进行处理。服务器的资源是有限的,这就导致它的最大连接数是有限的,通过ServerSocket的构造函数可以指定这个最大连接数。如果不明确指定这个连接数,默认最大连接数为50,也就是说,客户端的请求队列最大能容纳50个请求,当超过了这个最大连接数时,用户的请求将不再会被响应。
由于存在单个服务程序与多个客户程序通信的可能,所以服务程序响应客户程序不应该花很多时间,否则客户程序在得到服务前有可能花很多时间来等待通信的建立,然而服务程序和客户程序的会话有可能是很长的,因此为加快对客户程序连接请求的响应,典型的方法是服务器主机运行一个后台线程,这个后台线程处理服务程序和客户程序的通信。这一点和客户端的程序设计是不同的。
12
河南理工大学本科生毕业设计(论文)说明书
3 规划设计
3.1 课题来源
根据当前网络的需求,网络聊天越来越受各种网民所青睐。因此开发网络聊天是相当有必要,而且在网站内增加聊天功能,它不仅可以提高网站的访问量,同时可以留着访客,更重要的是让访客透过聊天室实时的互相交流。而本人也学习过JAVA语言,对网络编程也较有兴趣,为了更好的考验自己对JAVA语言的掌握程度,本人就决定以《Java聊天室》为毕业设计,希望通过这一次能进一步提高本人的网络开发编程的能力。
3.2 需求分析
利用Java实现基于C/S模式的聊天程序,聊天系统不外乎两个方面,服务器端和客户端。服务器端程序主要负责侦听客户端发来的消息,客户端需登录到服务端才可以实现正常的聊天功能。简单分析一下两个方面所要完成的任务,对设计这个程序来说,等于完成了一半。首先来看一下服务器端的任务:
服务器端的主要功能如下:
(1)在特定端口上进行侦听,等待客户端连接。
(2)用户可以配置服务端的侦听端口,默认端口为8888。 (3)向已经连接到服务端的用户发送系统消息。 (4)统计在线人数。
(5)当停止服务时,断开所有的用户连接。
以上就是服务器端最主要任务。不难看出,服务器端的任务并不复杂。 客户端的主要功能如下:
13
河南理工大学本科生毕业设计(论文)说明书
(1)连接到已经开启服务的服务端。
(2)用户可以配置要连接服务器端的IP地址与端口号。 (3)用户可以配置连接后显示的用户名。
(4)当服务器端开启的话,用户可以随时登录与注销。 (5)用户可以向所有人或某一个人发送消息。
相对服务器而言,客户端的任务也不很复杂,有了以上的简单分析,可以知道,解决上述问题,即完成了该聊天系统的核心。
14
河南理工大学本科生毕业设计(论文)说明书
4 系统分析与设计方案
4.1 聊天系统的总体设计要点
聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:
(1)实现思想
在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。
(2)服务器端工作流程
服务器端通过socket()系统调用创建一个Socket数组后(即设定了接受连接客户的最大数目),与指定的本地端口绑定bind(),就可以在端口进行侦听listen()。如果有客户端连接请求,则在数组中选择一个空Socket,将客户端地址赋给这个Socket。然后登录成功的客户就可以在服务器上聊天了。
(3)客户端工作流程
客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接收数据就可以了。
4.2 聊天系统的设计步骤
(1)聊天系统工作原理图
15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Java聊天室毕业论文(4)在线全文阅读。
相关推荐: