77范文网 - 专业文章范例文档资料分享平台

基于Socket网络聊天系统的设计与实现(2)

来源:网络收集 时间:2019-01-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

第一章 系统开发工具简介

第一节 客户机/服务器模型

一、C/S结构简介

客户机/服务器模型,又称为Client/Server模型,简称C/S架构[5]。C/S计算技术在信息产业中占有重要的地位。

它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。客户端的任务是将用户的要求提交给服务器程序,再将服务器程序返回的结果以特定的形式显示给用户。服务器程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。

二、C/S特点

C/S是客户端/服务器,一般适合于软件开发,对客户端的计算机配置要求比较高,客户端也需要安装软件,比如QQ。C/S架构软件的特点如下:

应用服务器运行数据负荷较轻。C/S体系结构由客户应用程序和数据库服务程序组成,二者分别称为前台程序和后台程序。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序当需要对数据库中的数据进行任何操作时,客户程序就会自动寻找服务器程序,并向其发出请求,服务器程序根据规程做出响应,返回结果,应用服务器运行数据负荷较轻。

数据的储存管理功能较为透明。在数据库应用中数据的储存管理功能是由服务器程序和客户应用程序分别独立进行的。前台应用可以违反的规则,并且通常把那些不同的运行数据,在服务器程序中不集中实现。因此对于工作在前台程序上的最终用户是“透明”的,他们无须干涉背后的过程就可以完成自己的一切工作。在C/S提醒体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。

2

第二节 JAVA简介

Java是由SunMicrosystems公司于1995年5月推出的java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、internet计算。从此Java被广泛接受并推动力web的迅速发展,常用的浏览器限制均支持Java applet。

Java平台由Java虚拟机(Java Virtual Machine)和Java应用编程接口(Application Programming Interface,简称API)构成。Java应用在编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件和操作系统平台上安装一个Java平台之后,Java应用程序就可运行。Java应用编程接口已经从1.1X版本发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.7。

Java分为三个体系J2SE(Java2 Standard Edition),J2EE(Java 2 Platform enterprise Edition),J2ME(Java 2 Micro Edition)。

Java是一种具有简单性(Java语法是C++语法的一个“纯净”版本)、面向对象(面向对象是一种程序设计技术,它将重点放在数据和对象的接口上)、网络技能(Java有一个扩展的例程库,用于处理HTTP和FTP这类的TCP/IP协议)、健壮性、安全性(Java可以构建防病毒、防篡改的系统)、体系结构中立、可移植性、解释型、高性能、多线程的动态语言[6]。

Java的I/O建立于流(stream)之上。输入流读取数据;输出流写入数据。不同的流类如java.io.FileInputStream和sun.net.TeletOutputStream读写某一种数据源。但是所有输入流都有相同的基本方法,所有输入流也使用相同基本方法来读取数据[7]。

Java中的数据流类型有两种:

输出流(OutputStream):输出流数据流经数据从程序送到数据接收者,如可以向显示器屏幕或者文件传输数据。输出流只能写不能读。

输入流(InputStream):程序从外部设备写数据时,使用输入流。输入流将数据从数据源传递给程序,可以从键盘或者文件中获得数据。输入流只能读不能写。

3

第三节 Socket简介

Socket通常被称为“套接字”,用于描述IP地址和端口[8]。Socket是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范[9],Socket接口是TCP/IP网络的API。在网络通信中,如果两台计算机之间是靠一个“通道”通信,那么这个“通道”的两端就是套接字。

Socket是传输层提供的网络进程通信接口,相当于我们现在所用的“插座”,是进程之间通信的抽象连接点。在日常生活中,我们常见到信号插座、电话插座、接收/发送信号(或能量)的插座。Socket就相当于在电话线和电话机之间安放的插座。在网络上,两个程序是靠一个双向链路进行通信,这个双向链路的每一端就成为一个Socket。

进程之间通信,首先要需要建立一个自己的Socket,每个Socket都能进行读/写操作,进行读写操作时就会用到Socket中的输入/输出流[10]。

客户端建立Socket对象步骤:

1、调用 Socket()创建一个流套接字,并连接到服务器端;

Socket s=new Socket(InetAddress.getByName(“服务器的主机名”),port); 2、调用 Socket 类的 getOutputStream()和 getInputStream 获取输出流和输入流,开始网络数据的发送和接收。

OutputStream os=s.getOutputStream(); InputStream is=s.getInputStream(); byte[] buf=new byte[100];

int len=is.read(buf);//从服务器端读取数据 System.out.println(new String(buf,0,len));

os.write(\向服务器端输入数据 3、最后关闭通信套接字。 os.close();is.close();s.close(); 服务器端建立Socket步骤:

1、创建一个服务器端套接字,并绑定到指定端口上; ServerSocket ss=new ServerSocket(int port),

2、调用 accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。

Socket s=ss.accept();

3、调用 Socket 类的 getOutputStream()和 getInputStream 获取输出流和输入流,开始网络数据的发送和接收。

OutputStream os=s.getOutputStream();

4

InputStream is=s.getInputStream();

os.write(\向客户端发送数据 byte[] buf=new byte[100];

int len=is.read(buf);//从客户端读取数据 System.out.println(new String(buf,0,len));

4、最后关闭通信套接字。 os.close(); is.close(); s.close();

建立连接后,客户端可以发出向Socket写数据的请求,服务器端则会对这个请求进行处理,并将处理结果通过Socket返回。服务器端则会对客户端进行监听,当监听到客户端有连接请求时,客户端就会与服务器端建立一个通信连接。同时,客户端被分配一个与Socket连接的本地端口号,服务器也会获取一个本地端口号。

Socket之通信主要使用TCP和UDP两种协议,UDP和TCP套接字用于传输延迟敏感的,但耐错误的数据流,例如多媒体流的应用程序产生的数据,适不适合的[11]。面向连接的套接字使用的是TCP协议,该协议可以保证数据的可靠传输;无连接的套接字通信使用的是UDP协议,该协议不能保证数据的可靠传输和连接的有效性。

1、使用TCP协议

进行通信必须完成以下过程,如图1.1所示。

客户端

通过Connect方法连接到指定的服务器; 通过write方法向服务器发送服务请求; 通过read从服务端接收数据。

服务器端

使用Bind方法绑定所指定的端口使Socket与一个本地端口相联; 使用 Listen方法监听该端口上的请求;

当监听到用户端发出的连接请求时,调用Accept完成连接的操作; 处理客户端请求后,使用write方法将数据返回给客户端; 建立新的Socket以处理传入的连接请求。

2、使用UDP

通信必须完成以下过程,如图1.2所示。

客户端

通过Connect方法连接到指定的服务器; 通过write方法向服务器发送服务请求; 通过read从服务端接收数据;

5

服务器端

使用Bind方法绑定所指定的端口使Socket与一个本地端口相联; 使用 Listen方法监听该端口上的请求;

当监听到用户端发出的连接请求时,服务器端处理连接请求;

使用write将结果返回到客户端。

Socket()服务器Socket()建立连接Connect()Blind()Read()服务请求Write()Listen()处理服务请求Accept()Write()响应服务Read()阻塞,等待客户请求连接Close()Close()

图1.1 面向连接的客户机/服务器交互过程

6

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于Socket网络聊天系统的设计与实现(2)在线全文阅读。

基于Socket网络聊天系统的设计与实现(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/446313.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: