Linux环境下基于TCP_IP及Socket技术的远程文件传送控制编程报告(17页).doc
《Linux环境下基于TCP_IP及Socket技术的远程文件传送控制编程报告(17页).doc》由会员分享,可在线阅读,更多相关《Linux环境下基于TCP_IP及Socket技术的远程文件传送控制编程报告(17页).doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-Linux环境下基于TCP_IP及Socket技术的远程文件传送控制编程报告-第 17 页Linux环境下基于TCP/IP及Socket技术的远程文件传送控制编程报告2013年5月目 录一、编程目的3二、通信原理3(一)TCP/IP3(二)Socket4三、Linux虚拟环境安装7(一)VMware简介7(二)Linux简介8(三)Linux虚拟环境安装9四、设计过程11(一)服务器端创建监听与文件管理11(二)客户端连接与文件传输12五、结果演示12六、代码开发13(一)服务器端13(二)客户端18七、结束语20一、编程目的这次程序设计的目标是在以Linux为内核的操作系统下,实现多线程文
2、件传输系统功能模块。系统模块分为服务器和客户端两部分,客户端实现对文件的上传、下载和查看服务器默认路径下的文件列表;服务器可以对文件进行管理操作,包括创建、删除和重命名等。多线程文件传输是一种一对多或者多对多的关系,一般是一个服务器对应着多个客户端。客户端通过socket连接服务器,服务器要为客户端创建一个单独进程(线程)监听每个客户端的请求。创建好连接之后文件就可以通过流的形式传输。linux内核中为我们提供了两种不同形式的读写流,包括read()、write()和send()、recv()。客户机对文件的查看指令也是通过流传递给服务器,服务器根据请求类型返回不同相应流。根据socket原理
3、和特点绘画出链接流程图,将客户机与服务器的相互通信划分为不同的模块,每个模块负责独立的功能项。服务器输入指令管理目录下的文件,create filename是创建文件命令,rename oldname newname是删除文命令,delete filename 是删除文件命令,同时监听着客户端的请求;客户端向服务器发送上传、下载和查看请求,从而得到不同的相应,包括将文件下载到当前路径下,从当前路径下上传文件给服务器,列出服务器的文件列表。二、通信原理Linux是计算机使用的主流操作系统之一,TCP/IP是广为应用的互联网协议,Linux为TCP/IP网络编程提供了一种网络进程通信机制:套接字接
4、口(SocketsInterface)。以下将介绍Linux环境下套接字的基本概念及编程技术,并结合实例说明在Linux下如何用套接字实现客户机/服务器方式的进程通信。(一)TCP/IPTCP/IP即传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol),是一个由多种协议组成的协议族,他定义了计算机通过网络互相通信及协议族各层次之间通信的规范。TCP是一种面向连接的、可靠的、双向的通信数据流,说他可靠,是因为他使用3段握手协议传输数据,并且在传输时采用“重传肯定确认”机制保证数据的正确发送:接收端收到数据后要发出一个肯定确认,而
5、发送端必须要能接收到这个肯定信号,否则就要将数据重发。在此原理基础之上,设计了基于Linux操作系统下TCP/IP编程实现文件传输的实例。我们采用客户机/务器模式通信时,通信双方发送/接收数据的工作Linux支持BSD的套接字和全部的TCP/IP协议,是通过网络协议将其视为一组相连的软件层来实现的。BSD套接字(BSD Socket)由通用的套接字管理软件支持,该软件是INET套接字层,用来管理基于IP的TCP与UDP端口到端口的互联问题。从协议分层来看,IP是网络层协议,TCP是一个可靠的端口到端口的传输层协议,他是利用IP层进行传接报文的;同时也是面向连接的,通过建立一条虚拟电路在不同的网
6、络问传输报文,保证所传输报文的无丢失性和无重复性。用户数据报文协议(User Datagram Protocol,UDP)也是利用IP层传输报文,但他是一个非面向连接的传输层协议。利用IP层传输报文时,当目的方网际协议层收到IP报文后,必须能够识别出该报文所使用的上层协议(即传输层协议)。因此,在IP报头中,设有一个“协议”域(Protoco1)。通过该域的值,即可判明其上层协议类型。传输层与网络层在功能上的最大区别是前者提供进程通信能力,而后者则不能。在进程通信的意义上,网络通信的最终地址不仅仅是主机地址,还包括可以描述进程的某种标识符。为此,TCP/UDP提出了协议端口(Protocol
7、Port)的概念,用于标识通信的进程。例如,Web服务器进程通常使用端口80,在/etc/services文件中有这些注册了的端口地址。对于TCP传输,传输节点问先要建立连接,然后通过该连接传输已排好序的报文,以保证传输的正确性。IP层中的代码用于实现网际协议,这些代码将IP头增加到传输数据中,同时也把收到的IP报文正确地转送到TCP层或UDP层。TCP是一个面向连接协议,而UDP则是一个非面向连接协议,当一个UDP报文发送出去后,Linux并不知道也不去关心他是否成功地到达了目的主机。IP层之下,是支持所有Linux网络应用的网络设备层,例如:点到点协议(Point to Point Pro
8、tocol,PPP)和以太网层。网络设备并非总代表物理设备,其中有一些(例如回送设备)则是纯粹的软件设备,网络设备与标准的Linux设备不同,他们不是通过Mknod命令创建的,必须是底层软件找到并进行了初始化之后,这些设备才被创建并可用。因此只有当启动了正确设置的以太网设备驱动程序的内核后,才会有/dev/eth0文件。ARP协议位于IP层和支持地址解析的协议层之间。(二)Socket1、套接字简介套接字(Socket)是网络通信的基本操作单元,它提供了不同主机间进程双向通信的端点,这些进程在通信前各自建立一个Socket,并通过对Socket的读/写操作实现网络通信功能。套接字分为以下3种类
9、型。1) 字节流套接字这是最常用的套接字类型,TCP/IP协议簇中的TCP(Transport Control Protocol)协议使用此类接口,它提供面向连接的(建立虛电路)、无差错的、发送先后顺序一致的、包长度不限和非重复的网络信包传输。2) 数据报套接字TCP/IP协议族中的UDP(UserDatagramProtocol)协议使用此类接口,它是无连接的服务,以独立的信包进行网络传输,信包最大长度为32KB,传输不保证顺序性、可靠性和无重复性,它通常用于单个报文传输或可靠性不重要的场合。3) 原始数据报套接字提供对网络下层通讯协议(如IP协议)的直接访问,它一般不是提供给普通用户的,主
10、要用于开发新的协议或用于提取协议较隐蔽的功能。2、套接字编程方法这里将分别介绍面向连接协议的字节流套接字与非连接协议的数据报套接字的编程方法,因原始数据报套接字在实际工作中较少,在此不作讨论。不论何种套接字编程均采用客户机/服务器的协作模式,即由客户进程向服务器进程发出请求,服务器进程执行被请求的任务并将结果返回给客户进程。字节流套接字的服务进程和客户进程在通信前必须建立连接。建立连接及通信的步骤见图1。1) 服务进程首先调用Socket()创建一个字节流套接字,并调用bind()将服务器地址捆扎在该套接字上,接着调用listen()监听连接请求,随后调用accept()做好与客户进程建立连接
11、的准备,无连接请求时,服务进程被阻塞;2) 客户进程调用Socket()创建字节流套接字,然后调用connect()向服务进程发出连接请求;3) 当连接请求到来后,服务进程被唤醒,生成一个新的字节流套接字,并用新套接字同客户进程的套接字建立连接,而服务进程最早生成的套接字则继续用于监听网络上的服务请求;4) 服务进程和客户进程通过调用read()和write()交换数据;5) 服务进程和客户进程通过调用close()撤消套接字并中断连接。数据套接字的服务进程客户进程通信前不必建立连接,通信的步骤见图2。1) 服务进程首先调用Socket()创建一个数据套接字,并调用Bind()将服务器地址捆扎
12、在该套接字上,然后调用Recvfrom()等待客户进程发来的请求;2) 客户进程在调用Socket()创建一个数据报套接字后,调用Bind()将客户机地址捆扎在此套接字上,接着调用Sendto()向服务进程发送请求,然后调用Recvfrom()等待服务进程返回该请求的处理结果;3) 服务进程在执行客户进程所请求的任务后,调用Sendto()将处理结果返回给客户进程;4) 服务进程和客户进程通过调用Close()撤消套接字。3、套接字编程示例下面给出一个运用字节流套接字在TCP/IP网络上实现客户机/服务器方式进程通信的实例。在此例中,服务进程先于客户进程运行,当双方建立连接后,服务进程通过该连
13、接向客户进程不断发送一个连续增长的序列数,客户进程每接收到50个序列数就在屏幕上显示一个.,显示至20个点后换行,直至任意一方进程被中断为止。#include#include#include#include#includemain()intsock,namelen,seq,netint;structsockaddr-inserver;/存服务器的internet地址charmsgsock;charbuf1024;/创建internet域的TCP协议的字节流套接字sock=socket(AF-INET,SOCK-STREAM,IPPROTO-TCP);if(sock0) perror(socke
14、t);exit(1);/将本地主机(服务器)的地址捆扎到创建的套接字上server.sinfamily=AF-INET;/internet域sevrer.sinaddr.s-addr=INADDR-ANY;/使用任意合法地址sevrer.sinport=htons(1032);/公认的服务端口号if(bind(sock,&server,sizeof(server)0)perror(bind);exit(2);/阻塞至客户方有连接请求到来,建立一新套接字用于通信namelen=sizeof(server);if(msgsock=accept(sock,&server,&namelen)0)per
15、ror(accept);exit(4);/此时连接已建立,可以进行通信seq=0;for(;)netint=htonl(seq);/主机字节顺序转为网络字节顺序write(msgsock,&netint,4);/向客户方写序列数seq+;三、Linux虚拟环境安装为了便于程序的开发和测试,本次利用虚拟机软件VMware在同一台计算机上安装Linux操作系统,实现程序开发环境的搭建。(一)VMware简介美国VMware公司推出的虚拟计算平台VMware提供了一种在一台计算机上同时运行各种Linux和Windows操作系统的具有创新意义的解决方案。VMware支持的系统包括:各种Linux发行版
16、、DOS、Windows 3.1、Windows 95、Windows 98、Windows NT,Windows 2000、Windows Me以及FreeBSD等。1、VMware的特点在本书后续章节中,使用Guest来表示VMware虚拟的客户机,Guest OS指运行在虚拟机上的操作系统;Host指物理存在的计算机,Host OS指在Host上运行的操作系统。例如,在操作系统为Windows的计算机上安装了VMware,并虚拟了Linux。那么,Host是安装Windows的这台计算机,Host OS是Windows,虚拟机上运行的Linux就是Guest OS。VMware具有以下特
17、点:VMware为虚拟计算机提供了BIOS,你可以像对独立的计算机那样更改虚拟机的BIOS参数设置。可以在窗口模式下运行Guest,也可以在全屏模式下运行。当你从Guest OS切换到Host OS屏幕之后,系统将自动保存Guest OS上运行的所有任务,以避免由于Host OS的崩溃而损失Guest OS应用程序中的数据。每一个虚拟机操作系统都是相对独立的,并拥有独立的网络地址。Guest和Host之间支持TCP/IP、Novell Netware、Microsoft虚拟网络以及Samba文件共享等协议。4.2节将详细介绍Windows Host与Linux Guest之间的文件共享方式。V
18、Mware支持Guest OS和Host OS之间以及不同Guest OS操作环境下的剪切、复制和粘贴操作。在硬件方面,VMware支持CD-ROM、软驱以及音频的输入输出,从VMware 2.03开始增加了对SCSI设备、SVGA图形加速卡以及ZIP驱动器的支持。VMware窗口提供了打开虚拟机电源、关闭虚拟机电源以及复位键等按钮,这些按钮就如同虚拟机机箱上的按钮一样。例如,对Windows Guest来说,如果在运行过程中非正常关机或者VMware崩溃,下次启动Guest的时候,它会自动进行文件系统的检查和修复。2、VMware的运行原理借助VMware提供的虚拟功能,可以在同一个窗口运行
19、多个全功能的操作系统。VMware中的Guest OS直接在X86保护模式下运行,使所有的虚拟机操作系统就像运行在单独的计算机上一样。VMware运行在主机的操作系统之上,它在Guest OS与Host OS之间加了一层虚拟操作平台(VMware Virtual Platform),对下层的硬件和相关软件进行了虚拟,形成独立的计算机系统,所有的Guest OS都运行在一个独立的虚拟计算机之上。(二)Linux简介Linux是一种自由和开放源代码的类UNIX操作系统。定义Linux的组件是Linux内核,该操作系统内核由林纳斯托瓦兹在1991年10月5日首次发布。严格来讲,术语Linux只表示操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 环境 基于 TCP_IP Socket 技术 远程 文件 传送 控制 编程 报告 17
限制150内