程序设计实践实验指导书

程序设计实践实验指导书

ID:11867345

大小:190.00 KB

页数:26页

时间:2018-07-14

程序设计实践实验指导书_第1页
程序设计实践实验指导书_第2页
程序设计实践实验指导书_第3页
程序设计实践实验指导书_第4页
程序设计实践实验指导书_第5页
资源描述:

《程序设计实践实验指导书》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、程序设计实践实验指导书程序设计实践实验指导书福州大学数学与计算机学院软件研究所26程序设计实践实验指导书目录第一部分JavaSocket编程21.1套接字基础21.2Java中的套接字51.3一个简单示例81.4一个多线程的示例161.5一个带有连接池的示例19第二部分实验252.1实验一:网络棋牌类游戏“找朋友”的设计与实现2526程序设计实践实验指导书第一部分JavaSocket编程1.1套接字基础多数程序员,不管他们是否使用Java语言进行编码,都不想很多知道关于不同计算机上的应用程序彼此间如何通信的低级细节。程序员们希望处理更容易理解的更高级抽象。Java程

2、序员希望能用他们熟悉的Java构造,通过直观接口与对象交互。计算机以一种非常简单的方式进行相互间的操作和通信。计算机芯片是以1和0的形式存储并传输数据的开—闭转换器的集合。当计算机想共享数据时,它们所需做的全部就是以一致的速度、顺序、定时等等来回传输几百万比特和字节的数据流。每次想在两个应用程序之间进行信息通信时,您怎么会愿意担心那些细节呢?为免除这些担心,我们需要每次都以相同方式完成该项工作的一组包协议。这将允许我们处理应用程序级的工作,而不必担心低级网络细节。这些成包协议称为协议栈(stack)。TCP/IP是当今最常见的协议栈。多数协议栈(包括TCP/IP)都

3、大致对应于国际标准化组织(InternationalStandardsOrganization,ISO)的开放系统互连参考模型(OpenSystemsInterconnectReferenceModel,OSIRM)。OSIRM认为在一个可靠的计算机组网中有七个逻辑层(见图)。各个地方的公司都对这个模型某些层的实现做了一些贡献,从生成电子信号(光脉冲、射频等等)到提供数据给应用程序。TCP/IP映射到OSI模型中的两层的情形如图所示。套接字大致驻留在OSI模型的会话层(见图)。会话层夹在其上面向应用的层和其下的实时数据通信层之间。会话层为两台计算机之间的数据流提供管

4、理和控制服务。作为该层的一部分,套接字提供一个隐藏从导线上获取比特和字节的复杂性的抽象。换句话说,套接字允许我们让应用程序表明它想发送一些字节即可传输数据。套接字隐藏了完成该项工作的具体细节。当您打电话时,您的声音传到传感器,传感器把它转换成可以传输的电数据。电话机是人与电信网络的接口。您无须知道声音如何传输的细节,只要知道想打电话给谁就行了。同样地,套接字扮演隐藏在未知通道上传输1和0的复杂性的高级接口的角色。使用套接字的代码工作于表示层。表示层提供应用层能够使用的信息的公共表示。假设您打算把应用程序连接到只能识别EBCDIC的旧的银行系统。应用程序的域对象以AS

5、CII26程序设计实践实验指导书格式存储信息。在这种情况下,您得负责在表示层上编写把数据从EBCDIC转换成ASCII的代码,然后(比方说)给应用层提供域对象。应用层然后就可以用域对象来做它想做的任何事情。您编写的套接字处理代码只存在于表示层中。您的应用层无须知道套接字如何工作的任何事情。既然我们已经知道套接字扮演的角色,那么剩下的问题是:什么是套接字?BruceEckel在他的《Java编程思想》一书中这样描述套接字:套接字是一种软件抽象,用于表达两台机器之间的连接“终端”。对于一个给定的连接,每台机器上都有一个套接字,您也可以想象它们之间有一条虚拟的“电缆”,“

6、电缆”的每一端都插入到套接字中。当然,机器之间的物理硬件和电缆连接都是完全未知的。抽象的全部目的是使我们无须知道不必知道的细节。简言之,一台机器上的套接字与另一台机器上的套接字交谈就创建一条通信通道。程序员可以用该通道来在两台机器之间发送数据。当您发送数据时,TCP/IP协议栈的每一层都会添加适当的报头信息来包装数据。这些报头帮助协议栈把您的数据送到目的地。好消息是Java语言通过"流"为您的代码提供数据,从而隐藏了所有这些细节,这也是为什么它们有时候被叫做流套接字(streamingsocket)的原因。把套接字想成两端电话上的听筒—我和您通过专用通道在我们的电话

7、听筒上讲话和聆听。直到我们决定挂断电话,对话才会结束(除非我们在使用蜂窝电话)。而且我们各自的电话线路都占线,直到我们挂断电话。如果想在没有更高级机制如ORB(以及CORBA、RMI、IIOP等等)开销的情况下进行两台计算机之间的通信,那么套接字就适合您。套接字的低级细节相当棘手。幸运的是,Java平台给了您一些虽然简单但却强大的更高级抽象,使您可以容易地创建和使用套接字。一般而言,Java语言中的套接字有以下两种形式:·TCP套接字(由Socket类实现,稍后我们将讨论这个类)·UDP套接字(由DatagramSocket类实现)TCP和UDP扮演相同角色,但

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。