已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与技术学院网络计算设计与实现实验指导书实验一 SOCKET编程【试验环境】计算机、TCP/IP协议、VS2005【实验目的】1理解基本TCP/IP协议编程原理;2掌握如何利用SOCKET编写网络程序; 3掌握VS2005编程环境,多线程程序设计等。【实验要求】1 编写一个服务端的程序,接收来自客户端的访问请求,并返回相关信息;2 编写一个客户端程序,向服务端发送连接请求,并显示返回的结果;3 完善服务端程序,使它能够同时支持多个客户端的请求。【预备知识】l public Socket Accept ():为新建连接创建新的 Socket。 l public void Bind (EndPoint localEP):使 Socket 与一个本地终结点相关联。 l public void Close ():关闭 Socket 连接并释放所有关联的资源。l public void Connect (EndPoint remoteEP):建立与远程主机的连接。注意这个方法有重载方法。l public void Disconnect (bool reuseSocket):关闭套接字连接并是否允许重用套接字。 l public void Listen (int backlog):将 Socket 置于侦听状态。 l public int Receive (byte buffer):接收来自绑定的 Socket 的数据。注意这个方法有重载方法。 l public int ReceiveFrom (byte buffer,ref EndPoint remoteEP):接收数据报并存储源终结点。注意这个方法有重载方法。l public int Send (byte buffer):将数据发送到连接的 Socket。注意这个方法有重载方法。l public void SendFile (string fileName):将文件和可选数据异步发送到连接的 Socket。注意这个方法有重载方法。l public int SendTo (byte buffer,EndPoint remoteEP):将数据发送到特定终结点。注意这个方法有重载方法。l public void Shutdown (SocketShutdown how):禁用某 Socket 上的发送和接收。因为在网络传输时传输的数据都是二进制形式的(表现为字节数组),所以如果要传输类似于中文这样的双字节字符就需要在传输之前用合适的编码转换成字节数组,然后接收方按照发送方的编码将接收到字节数组转换成字符串。另外,注意接收数据的时候是先声明了一个字节数组,然后将接收到的数据保存到字节数组中,这个方法有个返回值表示实际接收了多少字节数据。【实验内容】l 实现一个服务器端的面向连接的Socket用于接收客户端的请求的话,有如下步骤:1. 首先根据IP地址和端口号实例化一个Socket,注意端口要要大于1024并且不要使用特殊端口号,要大于1024的原因是1024以下的端口号已经被指派了,而1433、3306这样的端口号已经被用作SQL Server和MySQL的默认端口号了,若指定为这些端口号容易发生冲突。2. 接着调用Bind()方法进行绑定,然后再调用Listen()方法用于监听,Listen()方法的参数用于指定监听的队列大小,也就是最多可容纳的等待接受的传入连接数。3. 再调用Accept()方法,调用这个方法之后会是程序处于阻塞状态,直至有客户端连接为止。当有客户端连接,这个方法将会返回一个新的Socket,使用这个Socket与客户端进行通讯。4. 使用Accept()方法返回的新Socket的Send()方法就可以向客户端发送数据了,还可以使用这个新Socket的Receive()接收客户端的数据。5. 最后终止与客户端会话时,注意使用ShutDown()方法关闭Socket连接,并且使用Close()方法释放所占用的资源。ServerSocket类代码SocketThread类代码l 使用Socket类编写客户端的Socket程序步骤如下:1. 首先指定远程主机和端口号实例化Socket类,注意连接的端口号一定要与服务器监听的端口号一致。2. 接着调用Connect()方法连接远程主机。3. 连接到远程主机之后就可以调用Send()方法向服务器发送请求了,然后可以调用Receive()方法接收服务器响应数据,注意如果是发送的类似于中文这样的双字节字符串的话,还需要按照服务器响应的字符串编码将字节数组转换成字符串。Clinet类代码实验二 HTML与XML应用【试验环境】配置有windows记事本的计算机设备【实验目的】1. 通过本实验,使学生能够了解并掌握XML Schema的定义方法及其用途2. 了解并掌握Schema的基本结构3. 了解并掌握Schema的数据类型4. 了解并掌握Schema的元素声明5. 了解并掌握Schema的属性声明【实验要求】1. 能参照示例XML文件进行对应的XML Schema定义2. 能利用Schema对XML文件进行验证【实验内容】(1)对以下“个人信息.xml”进行Schema定义(设Schema文件名为“个人信息.xsd”) XML实用培训教程张健飞27元科学出版社北京东皇城根北街16号100717 XML网页制作彻底研究陈会安47元中国铁道出版社北京市宣武区右安门西街8号100054(2)书写XML Schema定义头部 JinYanZhong XML File Schema Test (3)定义bookcaseType类型(添加在处) (4)定义bookcase元素(紧随bookcaseType类型定义之后) (5)定义bookType元素类型(里面引用定义authorType, pub-houseType) (6)定义authorType及pub-houseType元素类型 (7)在XMLSpy中新创建一个基于“个人信息.xsd”的XML文件,体会该方法的方便快捷 (8)在IE中打开带有Schema定义的“个人信息.xsd”,观察符合DTD定义及不符合Schema定义的XML文件显示实验三基于JXTA的P2P程序设计【试验环境】JXTA、Eclipse【实验目的】1理解JXTA的工作原理;2掌握如何利用JXTA编写网络程序; 3掌握Eclipse编程环境等。【实验要求】1. 编写一个简单的Hello World的P2P程序2. 在对等网环境下试验程序。【实验内容】l JXTA的配置第一次运行时,在DOS窗口显示Starting JXTA.,然后出现JXTA的配置界面。有Basic,Advanced,Rendezvous/Relays 1. Basic settings:填入Peer Name2. Advanced:在高级信息配置的面板中,可以指定错误跟踪到的级别,TCP和HTTP网络都设置成可用.默认的情况下,错误跟踪到的级别设置为user default,TCP和HTTP网络都设置成可用.如果处于防火墙或者NAT(网络地址转换)的后面,就必须要使用HTTP的设置了.TCP的设置在默认的情况下,使用9701端口.HTTP的设置在默认的情况下,使用9700端口.如果在防火墙或者NAT之后,就必须选中HTTP的Enabled框.3. Rendezvous/Relays:如果在防火墙或NAT之后一定要选中use a relay(Required if behind firewall/NAT).可单击按钮Download relay and redezvous lists去下载一些可供使用的TCP和HTTP rendezvous以前HTTP的网关列表.也可以直接输入IP地址和端口号,然后单击+按钮来添加Rendezvous或HTTP Relay到列表中.如果没有自动下载的功能,则按照下图进行配置程序同目录下会出现一个.jxta的文件夹,其说明如下:1. PlatformConfig文件:由JXTA的配置工具生成,是一个符合XML规范的文本文件.2. perties文件:定义了一些jxta的属性.3. cm目录:本地的缓冲目录,记录了发现的所有的PeerGroup的.在上例运行后,发现jxta-NetGroup和jxta-WorldGroup.4. pse目录:存放Peer用于安全认证的证书信息.HelloWorld类代码实验四基于.NET的Web Service程序设计【试验环境】计算机、VS2005【实验目的】1理解基本Web Service的基本编程框架;2熟练掌握VS2005编程环境; 3,多线程程序设计等。【实验要求】1 编写一个基于Web Service的应用;2 调试代码并测试运行结果;3 使用客户端对Web Service进行调用。【实验内容】l 在.NET中创建Web Service% WebService Language=C# class=SecurityWebService %通知编译器运行Web Service模式,还有c#类名using System;using System.Web.Services;SecurityWebService 应该继承了Web Service类的功能public class SecurityWebService : WebService将默认生成的服务进行改写运行该程序,并验证结果在运行的过程中查看Soap协议l 在Windows Forms 中调用Web服务新建Windows Forms 工程,注意上面服务不要关。项目-添加服务引用,地址中输入Web服务的地址,上例:http:/localhost:3765/WebSite1/Service.asmx,如果Web服务已经发布,请填写发布的地址。在Form上加入两个TextBox,一个Button,双击Button,编写事件。运行结果:实验五WCF Service程序设计【试验环境】计算机、VS2008【实验目的】1理解基本WCF Service的基本编程框架;2熟练掌握VS2008编程环境; 【实验要求】1 编写一个基于WCF Service的应用;2 调试代码并测试运行结果;3 使用客户端对WCF Service进行调用。【基本概念】1. 服务:一个类库项目,提供对WCF服务的实现。定义在该项目中的所有WCF服务实现了服务契约;2. 宿主:一个控制台(Console)应用,实现对定义在Services项目中的服务的寄宿,该项目须要同时引用Services项目和System.ServiceMode程序集;3. 客户端:一个控制台应用模拟服务的客户端,该项目引用System.ServiceMode程序集。【实验内容】l 创建一个空的解决方案命名为WCFDemo,在该解决方案中创建两个控制台项目和一个类库项目,分别为Client、Host和Service。在这三个项目中分别引用程序集System.ServiceModel,另外在Service项目中引用程序集using System.Runtime.Serializationl 在本例中Service的功能就是提供一个返回HelloWorld的方法。在Service项目中添加一个名为IHelloWorldService的接口,并给接口添加相应的契约,代码如下:l 将Service项目中的类Class1重命名为HelloWorldService,让该类继承接口IHelloWorldService,并实现方法SayHello。代码如下:l 至此,服务类已经编写好了,编译下该项目,接下来就开始做宿主了,首先在Host项目中添加对Service项目的引用,如下图:l 在Host项目中需要初始化ServiceHost,并添加端点,代码如下:l 本例中的端点是用程序的方式来编写的,还可以使用配置文件的方式来做。客户程序将Service项目中的IHelloWorldService接口复制一份到Client项目中,在生成客户代理时用到。客户端程序代码如下:l 所有代码编写完成,先运行Host,再运行Client,会看到结果如下:实验六Google AppEngine程序设计【试验环境】计算机、AppEngine软件开发包、Python 2.5【实验目的】1理解云计算的基本理论知识;2掌握AppEngine软件包的基本使用; 3运用AppEngine进行简单的留言本的开发。【实验要求】1 下载AppEngine和Python2.5,;2 申请AppEngine帐号;3 编写程序,并在调试完毕后上传到服务器上。【预备知识】l Google App Engine用于让开发者进行网站应用程序开发或上传已经完成的应用。该开发包包含:一个web服务程序,用来模拟App Engine应用环境;一个本地版的数据存储方案;本地模拟的Google帐号集成;支持使用Api来分析URL和发送邮件。这个开发包可以运行在所有安装了Python2.5的机器上,并且支持Windows, Mac OS X 和Linux系统。l Google App Engine 应用通过CGI 标准协议与服务器通讯.这是一个标准的Http处理流程,Web服务接受到客户端发来的Get或Post请求,web服务器把请求转发给你的应用程序,由应用程序来处理要输出的内容。l webapp 应用包含三部分:一个或多个RequestHandler 类用来处理http请求和应答;一个WSGIApplication 实例,根据不同的URL请求,将处理交给不同的RequestHandler 类实例;一个主过程,通过CGI adaptor方式运行WSGIApplication【实验内容】l 创建一个简单的Request Handler 首先创建一个名为helloworld 的文件夹。除非特殊说明,以后所有关于这个应用程序的文件都将放在这个文件夹里面。在helloworld 文件夹里, 创建一个新文件helloworld.py,文件内容如下:class=prettyprintprint Content-Type: text/plainprint ”print Hello, world!这个Python 脚本处理一个request请求,并且设置一个Http header,输出一个空行和一段信息Hello, world!.创建配置文件:每个App Engine application 都包含一个名为app.yaml的配置文件。在这个配置文件中,可以设置具体的某个URL需要用哪个Python脚本来处理.现在,在helloworld 文件夹中,创建一个新的app.yaml 文件,输入以下内容:application: helloworldversion: 1runtime: pythonapi_version: 1handlers:- url: /.*script: helloworld.py这个配置文件描述了以下内容:这个应用程序的标识是helloworld. 这个标识需要和你在App Engine网站上创建的应用程序标识保持一致。在开发期间你可以使用任何你喜欢的名字,但是上传的时候,必须要和你在App Engine 注册的标识保持一致。现在,我们把它设置为helloworld.你的应用程序的版本号为1 ,如果你在上传应用之前修改了这个编号, App Engine 将会自动保留前一个版本的副本,以方便你可以在管理平台中将当前版本恢复成原来的版本。该应用运行在python 环境, 环境版本是1. 目前只有Python可选,将来会提供更多的运行环境和开发语言.所有符合正则表达式/.* (所有URL) 的请求,都由helloworld.py 脚本来处理.该配置文件使用YAML语法. 可以在本地App Engine SDK环境中进行模拟运行测试。首先,指定应用路径为helloworld 目录,使用下面的命令启动测试环境Web服务程序,google_appengine/dev_appserver.py helloworld/ 这个Web服务程序将监听8080端口. 你可以在浏览器中输入以下地址进行测试: http:/localhost:8080/ l 创建一个网络记事本创建guestbook文件夹,包含文件如下:app.yaml;guestbook.py图表 app.yaml图表 2guestbook.pyl 注册用户访问/,使用你的Google帐号登录到App Engine管理平台。(如果你还没有Google帐号,请先申请一个)为了创建一个新的GAE应用,请点击按钮Create an Application ,按照提示注册应用程序ID,应用程序ID的名字必须是唯一的。创建ID后,你就可以拥有一个/ 这样的URL地址来访问你的WEB应用了.当然,如果你拥有自己的域名的话,也可以将其绑定到你自己的应用。l 上传应用程序执行命令行程序:appcfg.py update helloworld/按照提示,输入您自己的Google 用户名和密码.现在你已经可以使用如下地址访问您刚刚上传的WEB应用了实验七Hadoop的安装与配置【试验环境】计算机、Java、Hadoop【实验目的】1理解云计算的基本理论知识;2理解Hadoop的基本概念3掌握如何在Linux上安装Hadoop;【实验要求】1 下载Hadoop和JDK;2 安装SSH;3 对Linux进行相应配置。【基础知识】l Hadoop是Google MapReduce的一个Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同java程序员可以 不考虑内存泄露一样, MapReduce的run-time系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的失效,并且管理机器之间的通讯请求。这样的模式允许程序员可以不需要有什么并发处理或者分布式系统的经验,就可以处理超大的分布式系统得资源。l 程序员的开发步骤:1. 定义Mapper,处理输入的 Key-Value 对,2. 定义Reducer,可选,对中间结果进行规约,输出最终结果3. 定义 InputFormat 和 OutputFormat,可选,InputFormat 将每行为 Java 类供Mapper函数使用,不定义时默认为 String。 4. 定义main 函数,在里面定义一个 Job 并运行它l Hadoop的工作过程一个集群中只有一个NameNode,可以有多个DataNodes;namenode 承担数据的位置存储信息,并将存储位置信息告诉client端;得到位置信息后,client端开始写数据;写数据的时候是将数据分块,并存储为多份(一般为3份),放在不同的datanode 节点; client 先将数据写到第一个节点,在第一个节点接收数据的同时,又将它所接收的数据推送到第二个,第二个推送到第三个节点,如果有多个节点,依次类推;从图中可以知道 NameNode 不参与数据块的IO的。n NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode 决定是否将文件映射到 DataNode 上的复制块上。对于最常见的 3 个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。注意,这里需要您了解集群架构。实际的 I/O 事务并没有经过 NameNode,只有表示 DataNode 和块的文件映射的元数据经过 NameNode。当外部客户机发送请求要求创建文件时,NameNode 会以块标识和该块的第一个副本的 DataNode IP 地址作为响应。这个 NameNode 还会通知其他将要接收该块的副本的 DataNode。NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 NameNode 的本地文件系统上。FsImage 和 EditLog 文件也需要复制副本,以防文件损坏或 NameNode 系统丢失。n NameNode 也是一个通常在 HDFS 实例中的单独机器上运行的软件。Hadoop 集群包含一个 NameNode 和大量 DataNode。DataNode 通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。Hadoop 的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。DataNode 响应来自 HDFS 客户机的读写请求。它们还响应创建、删除和复制来自 NameNode 的块的命令。NameNode 依赖来自每个 DataNode 的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果 DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块。n 文件操作:可见,HDFS 并不是一个万能的文件系统。它的主要目的是支持以流的形式访问写入的大型文件。如果客户机想将文件写到 HDFS 上,首先需要将该文件缓存到本地的临时存储。如果缓存的数据大于所需的 HDFS 块大小,创建文件的请求将发送给 NameNode。NameNode 将以 DataNode 标识和目标块响应客户机。同时也通知将要保存文件块副本的 DataNode。当客户机开始将临时文件发送给第一个 DataNode 时,将立即通过管道方式将块内容转发给副本 DataNode。客户机也负责创建保存在相同 HDFS 名称空间中的校验和(checksum)文件。在最后的文件块发送之后,NameNode 将文件创建提交到它的持久化元数据存储(在 EditLog 和 FsImage 文件)。【实验步骤】l 安装JDK(1)下载安装JDK:确保计算机联网之后命令行输入下面命令安装JDK sudo apt-get install sun-java6-jdk(2)配置计算机Java环境:打开/etc/profile,在文件最后输入下面内容 export JAVA_HOME = (Java安装目录) export CLASSPATH = .:$JAVA_HOME/lib:$CLASSPATH export PATH = $JAVA_HOME/:PATH(3)验证Java是否安装成功输入 java -version ,输出Java版本信息即为安装成功。l 安装配置SSH(1)下载安装SSH:同样在命令行输入下面命令安装SSH sudo apt-get install ssh(2)配置无密码登录本机:在命令行输入下面两条命令 $ ssh-keygen -t rsa -P -f /.ssh/id_rsa 直接回车,完成后会在/.ssh/生成两个文件:id_rsa和id_rsa.pub;这两个成对出现,类似钥匙和锁。 再把id_rsa.pub追加到授权key里面(当前并没有authorized_keys文件) $ cat /.ssh/id_rsa.pub /.ssh/authorized_keys验证SSH是否安装成功 输入 ssh localhost 。如果显示本机登录成功就表明安装成功。l 关闭防火墙 $sudo ufw disable 注意:这步非常重要,如果不关闭,会出现找不到datanode的问题l 安装运行Hadoop(以0.20.2版本为例)(1)下载Hadoop:在/dyn/closer.cgi/hadoop/core/页面上下载Hadoop。(2)安装配置Hadoop 单节点配置: 安装单节点的Hadoop无需配置,在这种方式下,Hadoop被认作为一个单独的Java进程。 伪分布配置: 伪分布的Hadoop是只有一个节点的集群。在这个集群中,计算机既是master也是slave, 即使 namenode也是datanode,既是jobtracker也是tasktracker。配置的过程如下:1、进入conf文件夹修改下面的文件。Hadoop-env.sh中加入下面内容:export JAVA_HOME = (JAVA安装目录)core-site.xml文件内容修改为下面内容: hadoop
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入党积极分子发展对象考试真题汇编及完整答案详解【名校卷】
- 2025年下半年湖南湘西州古丈县事业单位带编入伍招聘工作人员3人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年湖南株洲高新区(天元区)招聘事业单位编制10人(第三批)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年湖南新晃县事业单位招考拟聘人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年湖南怀化新晃侗族自治县事业单位招考(111人)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年湖南张家界市永定区事业单位招聘工作人员104人重点基础提升(共500题)附带答案详解
- 2025年下半年湖北黄石阳新县事业单位招聘91人重点基础提升(共500题)附带答案详解
- 2025年下半年湖北黄冈市直事业单位第二批招聘引进高层次人才116人重点基础提升(共500题)附带答案详解
- 2025年下半年湖北荆州市事业单位预计招录1614人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年湖北省事业单位联考重点基础提升(共500题)附带答案详解
- 短视频在教育中的创新应用及发展前景
- 2025年个人参加巡察工作总结心得(二篇)
- 基于物联网的智能设备销售合同
- 【MOOC】《研究生英语科技论文写作》(北京科技大学)中国大学MOOC慕课答案
- 《施奈德PLC培训》课件
- 2024年3月天津第一次高考英语试卷真题答案解析(精校打印)
- 初中九年级英语上学期期中考前测试卷(人教版)含答案解析
- 2024-2030年全球及中国汽车伺服电机行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 乌有先生历险记原文+注释+译文教师版
- 文明礼仪伴我行班会省公开课一等奖新名师比赛一等奖课件
- 2024农业种植项目合作协议书范本
评论
0/150
提交评论