外文翻译--socket通信翻译数据通信实验中的套接字编程  中文版.doc_第1页
外文翻译--socket通信翻译数据通信实验中的套接字编程  中文版.doc_第2页
外文翻译--socket通信翻译数据通信实验中的套接字编程  中文版.doc_第3页
外文翻译--socket通信翻译数据通信实验中的套接字编程  中文版.doc_第4页
外文翻译--socket通信翻译数据通信实验中的套接字编程  中文版.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京工业大学毕业设计(译文)15数据通信实验中的套接字编程摘要虽然许多数据通信的课程都没有教授编程方面的内容,但计算机专业课程的规划应该包括编程。许多有编程内容的数据通信课程当处理详细的网络层工程时利用了PC上的连续端口。UNIX套接字编程允许学生们处理同样的事情和问题,但是从文章中它看起来更有用,而且更有趣。另外,如果套接字类使用C+,希望得到的对套接字的操作差不多都可以呈现出来。序论数据通信是大多数管理信息系统(MIS)以及服务器/客户端(C/S)程序标准的一部分。目前作为课程广泛改善实行的证据是提供教材的变化。许多教材,无论是针对MIS还是CS,都很少或没有提供实验活动。MIS编程趋向强调数据通信和网络的管理。最近的新闻列表显示了对使用数据通信和通信所提供的种类和方式的调查。无论国内或国外,合作方案都非常流行。CS编程会使用一些非常技术和宽泛的教材。很明显,一个工程的规划需要更多广泛和详细的课程去研究数据通信的物理和结构方面。实验可能的类型同样很广泛。“全球合作模型”强迫教给我们数据通信如何工作,以用于复杂的通信机制和提供一个解释这些系统功能的基础。基于提供的资源,去考虑通过允许学生尝试通信的不同的物理和逻辑类型的设计选择。另一个极端是强调低水平的,数据通信物理理解的练习几乎是一个工程逼近。一个典型的例子是使用PC上连续的端口。除了编写代码去操作物理硬盘之外,更多复杂的概念将被研究。在作者过去使用过的资料中,利用一个BiSynch协议和令牌环来实现文件传送的分配。这个实验步骤包括基于一个发展中的ISOOSI数据链路层的大规模工程。这些步骤中没有提供实际可操作的硬件经验。除了这张纸中的练习,作者还安排了一个通过硬件和软件的安装将PC机联网的工程。服务器需要额外的安装和配置。当套接字模型被采用时,这样一个工程就可以继续下去。这里的步骤呈现了为学生们提供了一个数据通信和网络的广阔视角。UNIX套接字简单地讲,套接字是一个机制,在相同或不同的机器上实现信息传送的过程。如果这个过程在同样的机器上,套接字可以用作管道。Intetnet套接字允许运行在不同的机器之间的通信。这个系统与filei/o拥有同样的调用。套接字编程的一个典型的步骤是创建一个过程,打开服务器套接字端口和侦听另一个尝试连接的过程。客户端可以用与服务器端套接字同样的端口号打开一个套接字,请求服务连接。如果服务器侦听到这个请求,就建立了一个连接。通信使用read()和write()函数继续。北京工业大学毕业设计(译文)16通信有许多标准协议的类型,比较普遍地两种是UDP(UDP,UserDatagramProtocol,用户数据报协议)和TCP(TCP,TransmissionControlProtocol,传输控制协议)。两种协议都是经过一个套接字过程传送信息包。UDP不提供一个数据被接收或者大量信息包被顺序接收的保证。TCP是一个可靠的和有次序的流协议。程序员在TCP套接字上输入和输出,作为一个来自终端或文件的字节流出现。如果TCP数据在一个合理的时间内不能被成功传送,将会显示一个错误。由于在UDP中涉及比较少的开头部分,如果有次序收到数据非常重要,程序也就必须更加复杂。两个过程之间的套接字连接是两台主机/端口对之间的连接,端口号指示了提供的特殊服务。许多经TCP套接字的服务通常提供一个可识别的首字母缩写词:像SMTP(SMTP,SimpleMessageTransportProtocol,简单邮件传输协议,用于电子邮件的传输),NNTP(NNTP,NetworkNewsTransportProtocol,网络新闻传输协议(USE-NET))和FTP(FTP,FileTransferProtocol,文件传送输协议)。Telnet(Telnet,用于远程联接服务的标准协议或者实现此协议的软件)是另外的套接字服务。UNIX提供了一种机制,凭借着提供服务的名字能够译出端口号。套接字的优势数据通信实验中利用套接字编程的一个明显的缺点是没有像PC机连续端口那样多的直接硬件交互。然而,多数大学生不会处在这样详细的知识会很重要的情形中。即使有连续的端口,这个概念对许多学生来说仍然很抽象。基于套接字步骤地优势是它将套接字的抽象变得很具体。在过去,基于PC机实验的一个优势是费用的低廉。然而,至少有两个因素来平衡这种优势。一是现在UNIX工作站普遍使用,PC可以通过安装UNIX的免费版本来转换成工作站。另一个因素是,即使PC给相对便宜,实际上会出现老化,不稳定,机器被分配到一个像数据通信实验这样专注的工程。我们的经验是我们可以负担得起使用的机器都非常不稳定。虽然套接字编程的“高起点”的本性已经作为一个优势强调了,但使得分配像我们所希望的那样详细同样是可能的。没有任何软件支持的套接字编程需要大量“低起点”的理解和操作。一个简单是修改将是基于UDP包而不是TCP包的分配。许多附加的程序(经CRC(循环冗余码校验)的错误校验、顺序数字、接收的确认、接收错误的否定确认)都是必要的。无论是UDP或是TCP包,适当的设计握手机制对文件传输这样的程序来说都是必要的。通过连续的端口分配,课程时间就可以投入到作为控制、状态、数据记录和类似连续转换的低起点概念中。通过一个套接字步骤,就可以讨论像信息报头、网络和机器字节顺序这样类似的概念了。如果愿意,连续端口通信的许多适当的主题都可以成为套接字程序和给出的许多相同分配的必须。即使分配了高起点的应用,学生们仍然必须理解流和缓冲区之间的不同。北京工业大学毕业设计(译文)17C+套接字类的优势许多参考书提供了套接字通信的详细情形,这些参考书提供了任务的例子和方法。所有建立通信、把通信转换成缓冲区流和错误校验的详细情况都可以由UNIX系统调用完成。许多低起点的理解对于编写稳定的应用程序来说是必须的。一个设计得很好的C+类可以被构建用于使用简单的语义学提供套接字的完全功能。编写客户到建立的服务器、事件驱动服务器和轮流检测服务器是可能的。作者提供了一组C+类,这些程序都是在GNU下编写的。他们是由提供的。这些类对给出的任务表现出了非常好的功能。它的接口与输入输出流和提供安全类型的输入输出一样。在UDP和TCP域中有套接字流类,就像其中有管道流类一样。套接字缓冲区类来源于流缓冲区类。这样,学生们必须学习关于没有套接字输入与输出的流和缓冲区。套接字缓冲区类包括错误功能、准备好检测、直接操作、上溢出、下溢出和超时功能。套接字选项如消息路由、局部地址的再使用、广播等等都要设置。这样,套接字的详细情形就可以如希望的那样了。在我们特殊的课程中,使用这些C+类一方面的益处是学生们必须在一年级/二年级的水平课程中使用到C+语言,帮助他们保持学到的技能。任务在选择一个为期三学期的课程任务时,我们渴望实现很多目标。我们被希望设计出一系列的任务来让学生编写一个客户端的应用、一个服务器的应用、一个对等网络应用,也提供一些像电子邮件和文件传输这样一些标准应用的经验。另外,任务应该由简单到复杂,循序渐进。我们在下面列出了这些任务要点。这些任务得到了学生们的良好反响。他们感觉到了实践的乐趣,同时,也有了一个好的计划。一些以前没有接触过它们的学生经过努力也都有非常好的结果。这五项明确的任务是:任务一:套接字客户端到电子邮件服务器在本地或远程的机器上编写一个客户端程序去连接电子邮件服务器,然后发送一封电子邮件到一个用户名(userid在电子邮件地址中符号之前的名称)。用户不必要是本地或远程机器上的。例如,这个程序可能叫做smtp,包括两项任务:主机名和用户名。我们要求有一个简单的命令行接口,但是学生们可以自由地发挥,做出更多精致的电子邮件类型接口来。SMTP(SMTPSimpleMessageTransferProtocol,简单邮件传输协议,用于电子邮件的传输)的命令是一定会用到的。列举一些如下:北京工业大学毕业设计(译文)18HELOlocalname确认连接机器本地名称不需要一些服务器不需要HELO,但一些要包括。HELP发送命令列表MAILFROM:name可以是你愿意的任何东西不经过合法性的检验RCPTTO:name邮件的容器不需要是本地名称DATA允许信息进入以“.”作为消息的终止字符QUIT断开连接同其他的任务一样,这个任务也会带给学生一些不合适的活动。下面是提给学生们的一些警告:显然你可能在程序中做一些不礼貌的事情。例如,你可能从DaffyDuck那里发送一串管理员的消息。这需要一些工作量,但这些消息的发送人将会被记录。请不要热衷于这样幼稚的行为。一些人可能会争辩说这样的任务太“危险”,但是学生们可以学到如何操作套接字,能够解决如何自己发送邮件的问题。我们的方法是承认这样一个问题的存在并提出警告。任务二:简单的网络信息服务器编写一个有如下特征的网络服务器程序:1.从输入套接字接受命令2.解释命令并集合信息3.发送输出命令到输出套接字你不需要为这个任务编写一个客户端程序,因为标准的telnet(Telnet用于远程联接服务的标准协议或者实现此协议的软件,远程登录)客户端将可以提供这样的功能。Telnet允许你在客户端上给一个服务器过程发送信息并把握返回信息。一个信息的选择提供系统命令,像域名等等。系统的功能可以从一个C+程序内部执行。困难的部分是将命令的输出并发送输出到套接字与客户端连接起来。命令的输出应该与套接字直接连接。建议有两种途径:用管道流类和用传统的通过用户构造管道连接的Cfork

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论