网络接口层(主机-网络层):接纳IP数据报并进行传输,从网络上接纳物理帧,抽取IP数据报转交给下一层,对实践的网络媒体的办理,界说怎么运用实践网络(如Ethernet、Serial Line等)来传送数据。
依据局域网的文件传输体系的规划选用Virtual Studio 2008为开发东西,以C/S方式通过树立Socket衔接后完结局域网快速,精确,安全的点对点文件以及文件夹传输功用。本体系能够促进局域网内用户之间的文件资源同享,满意主机之间信息交流,确保文件及文件夹传输安全性,有用地进步作业功率。
规划共分为五大模块,别离为:一、介绍选题布景及含义和国内外研讨现状;二、介绍TCP/IP点对点协议技能,C/S架构的MFC程序规划技能和Socket网络编程技能;三、对当时局域网文件传输进行需求剖析并提出解决计划;四、依据解决计划对体系进行规划;五、对依据局域网的文件传输体系进行测验并得到测验成果。
函数阐明inet_addr()用来将参数cp所指的网络地址字符串转换成网络所运用的二进制数字。网络地址字符串是以数字和点组成的字符串,例如:“163.13.132.68”。
C/S(Client/Server)结构,即咱们熟知的客户机和服务器结构。它是软件体系体系结构,通过它能够充分运用两头硬件环境的优势,将使命合理分配到Client端和Server端来完结,降低了体系的通讯开支。现在大多数运用软件体系都是Client/Server方式的两层结构,因为现在的软件运用体系正在向散布式的Web运用开展,Web和Client/Server运用都能够进行相同的事务处理,运用不同的模块同享逻辑组件;因而,内部的和外部的用户都能够拜访新的和现有的运用体系,通过现有运用体系中的逻辑能够扩展出新的运用体系。这也便是现在运用体系的开展方向。
首要,选用C/S架构,要挑选恰当的数据库渠道来完结数据库数据的实在“一致”,使散布于两地的数据同步彻底交由数据库体系去办理,但逻辑上两地的操作者要直接拜访同一个数据库才干有用完结,有这样一些问题,假如需求树立“实时”的数据同步,就有必要在两地间树立实时的通讯衔接,坚持两地的数据库服务器在线运转,网络办理作业人员既要对服务器保护办理,又要对客户端保护和办理,这需求昂扬的出资和杂乱的技能支撑,保护本钱很高,保护使命量大。
最简略的C/S体系结构的数据库运用由两部分组成,即客户运用程序和数据库服务器程序。二者可别离称为前台程序与后台程序。运转数据库服务器程序的机器,也称为运用服务器。一旦服务器程序被发动,就随时等候呼应客户程序发来的恳求;客户运用程序运转在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需求对数据库中的数据进行任何操作时,客户程序就自动地寻觅服务器程序,并向其宣布恳求,服务器程序依据预订的规矩作出应对,送回成果,运用服务器运转数据负荷较轻。
可是跟着科学技能的开展,各种以局域网为单位的文件传输体系现已进入稳健开展期,比如说市面上比较遍及运用的QQ、UC、飞鸽传书等以内部网络为中心的资源同享体系也行将进入高速开展期。在国内,跟着企业资源办理的标准化和规划的不断扩大,企业的核算机资源办理将不只是停留在依托硬件或许Internet网络获取,而且将会向着安全的内部网络化资源办理方式跨进。
端口是一个软件结构,被客户程序或服务进程用来发送和接纳信息。一个端口对应一个16比特的数。服务进程一般运用一个固定的端口,例如,SMTP运用25、Xwindows运用6000。这些端口号是‘广为人知’的,因为在树立与特定的主机或服务的衔接时,需求这些地址和意图地址进行通讯。
假如IP数据包中有现已封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行过错查看,一起完结虚电路间的衔接。TCP数据包中包含序号和承认,所以未依照次序收到的包能够被排序,而损坏的包能够被重传。TCP将它的信息送到更高层的运用程序,例如Telnet的服务程序和客户程序。运用程序轮番将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最终到接纳方。面向衔接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需求高度的可靠性,所以它们运用了TCP。DNS在某些情况下运用TCP(发送和接纳域名数据库),但运用UDP传送有关单个主机的信息。
跟着网络通讯技能的开展与用户需求日益多样化,现代局域网络正处在革新与开展之中,本课题的首要意图之一是为了更明晰地培育学生把握科学研讨办法的才干和使学生敏捷领会文件传输体系的研制进程。依据局域网的文件传输体系能够让家庭网络以及各个企业等局域网对内部材料有一个便利,精确,安全的同享。特别是对现在较大体系研制的模块分工合作得到了肯定保密性,从而使各项作业有计划、更科学的进行及顺利完结,使企业的办事功率得到明显进步。文件传输体系首要功用是用户承认的主机名,IP地址以及作业组姓名,终究以C/S方式通过TCP/IP协议完结点到点文件传输功用。
本章首要介绍了关于网络的常识,TCP/Ip协议的首要内容和组成方式,C/S方式的内容,Winsock的简略介绍。
单击Open按钮,如图3-2,在弹出的翻开文件对话框中挑选你所要传输的文件。单击承认。
ICMP与IP坐落同一层,它被用来传送IP的的操控信息。它首要是用来供给有关通向意图地址的途径信息。ICMP的‘Redirect’信息告诉主机通向其他体系的更精确的途径,而‘Unreachable’信息则指出途径有问题。别的,假如途径不行用了,ICMP能够使TCP衔接‘体面地’停止。PING是最常用的依据ICMP的服务。
咱们都现已知道,Internet是由几千万台核算机彼此衔接而成的。而咱们要承认网络上的每一台核算机,靠的便是能仅有标识该核算机的网络地址,这个地址就叫做IP(Internet Protocol的简写)地址,即用Internet协议言语表明的地址。
现在,在Internet里,IP地址是一个32位的二进制地址,为了便于回忆,将它们分为4组,每组8位,由小数点分隔,用四个字节来表明,而且,用点分隔的每个字节的数值规模是0~255,如202.116.0.1,这种书写办法叫做点数表明法。
OnBnClickedServer( )将软件设置成服务器方式,并创立服务线程,用于监听套接字。
函数阐明bind()用来设置给参数sockfd的socket一个称号。此称号由参数my_addr指向一sockaddr结构,关于不同的socket domain界说了一个通用的数据结构:
本文较完整地评论了网络和文件编程等相关技能的常用处理办法。针对网络文件传输问题,获得的研讨成果如下(本文的首要作业如下):
综上所述,运用Winsock进行数据文件的传输,其特色是可控性强,完结灵敏便利,可依据需求将此功用扩展到广域网中,使此办法的数据传输技能愈加完善有用。往后的作业应该在广域网文件传输持续研讨。
函数阐明inet_ntoa()用来将参数in所指的网络二进制的数字转换成网络地址,然后将指向此网络地址字符串的指针回来。
软件选用面向对像的规划办法,考虑到对核算功率的要求,选用C编程言语,开发环境为Windows XP,编程东西为Visual Studio 2008,选用C标准库函数和MFC类库。
特色:运用多线程并发处理,模仿了异步传输方式,并通过音讯达到了子线程与主线软件进程图
回来值成功则回来新的socket处理代码,失利回来-1,过错原因存于errno中。过错代码
网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接纳由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接纳来的数据包传送到更低层。IP数据包是不行靠的,因为IP并没有做任何工作来承认数据包是按次序发送的或许没有被损坏。IP数据包中含有发送它的主机的地址(源地址)和接纳它的主机的地址(意图地址)。 高层的TCP和UDP服务在接纳数据包时,一般假定包中的源地址是有用的。也能够这样说,IP地址构成了许多服务的认证根底,这些服务信任数据包是从一个有用的主机发送来的。IP承认包含一个选项,叫作IP source routing,能够用来指定一条源地址和意图地址之间的直接途径。关于一些TCP和UDP的服务来说,运用了该选项的IP包好像是从途径上的最终一个体系传递过来的,而不是来自于它的实在地址。这个选项是为了测验而存在的,阐明晰它能够被用来诈骗体系来进行平常是被制止的衔接。那么,许多依托IP源地址做承认的服务将发生问题而且会被不合法侵略。
TCP和UDP服务一般有一个客户/服务器的联系,例如,一个Telnet服务进程开端在体系上处于闲暇状况,等候着衔接。用户运用Telnet客户程序与服务进程树立一个衔接。客户程序向服务进程写入信息,服务进程读出信息并宣布呼应,客户程序读出呼应并向用户陈述。因而,这个衔接是双工的,能够用来进行读写。 两个体系间的多重Telnet衔接是怎么彼此承认并协调一致呢?TCP或UDP衔接仅有地运用每个信息中的如下四项进行承认:
函数阐明inet_aton()用来将参数cp所指的网络地址字符串转换成网络运用的二进制的数字,然后存于参数inp所指的in_addr结构中。
在同一局域网的另一台及其上再运转一次此软件,并设置成服务器。如图3-5。
TCP/IP协议并不彻底契合OSI的七层参阅模型。传统的开放式体系互连参阅模型,是一种通讯协议的7层笼统的参阅模型,其间每一层履行某一特定使命。该模型的意图是使各种硬件在相同的层次上彼此通讯。这7层是:物理层、数据链路层、网络层、传输层、会话层、表明层和运用层。而TCP/IP通讯协议选用了4层的层级结构,每一层都呼叫它的下一层所供给的网络来完结自己的需求。这4层别离为:
函数阐明htonl()用来将参数指定的32位hostlong转换成网络字符次序。
函数阐明htons()用来将参数指定的16位hostshort转换成网络字符次序。
UDP与TCP坐落同一层,但它不论数据包的次序、过错或重发。因而,UDP不被运用于那些运用虚电路的面向衔接的服务,UDP首要用于那些面向查询---应对的服务,例如NFS。相关于FTP或Telnet,这些服务需求交流的信息量较小。运用UDP的服务包含NTP(网络时间协议)和DNS(DNS也运用TCP)。诈骗UDP包比诈骗TCP包更简略,因为UDP没有树立初始化衔接(也能够称为握手)(因为在两个体系间没有虚电路),也便是说,与UDP相关的服务面临着更大的风险。
本文提出的计划首要是在满意局域网内链路状况杰出,ip地址已知的条件下的文件传输。
运用层:运用程序间交流的层,如简略电子邮件传输(SMTP)、文件传输协议(FTP)、网络长途拜访协议(Telnet)等。
传输层:在此层中,它供给了节点间的数据传送,运用程序之间的通讯服务,首要功用是数据格局化、数据承认和丢掉重传等。如传输操控协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包参加传输数据并把它传输到下一层中,这一层担任传送数据,而且承认数据已被送达并接纳。
服务器指一个办理资源并为用户供给服务的核算机软件,一般分为文件服务器、数据库服务器和运用程序服务器。运转以上软件的核算机或核算机体系也被称为服务器。相关于一般PC来说,服务器在稳定性、安全性、功用等方面都要求更高,因而CPU、芯片组、内存、磁盘体系、网络等硬件和一般PC有所不同。
以U.C. Berkeley大学BSD UNIX中盛行的Socket接口为典范界说了一套microsoft Windows下网络编程接口。它不只包含了人们所了解的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地运用Windows音讯驱动机制进行编程。Windows Sockets标准原意在于供给给运用程序开发者一套简略的API,并让各家网络软件供货商一起恪守。此外,在一个特定版别Windows的根底上,Windows Sockets也界说了一个二进制接口(ABI),以此来确保运用Windows Sockets API的运用程序能够在任何网络软件供货商的契合Windows Sockets协议的完结上作业。因而这份标准界说了运用程序开发者能够运用,而且网络软件供货商能够完结的一套库函数调用和相关语义。恪守这套Windows Sockets标准的网络软件,咱们称之为Windows Sockets兼容的,而Windows Sockets兼容完结的供给者,咱们称之为Windows Sockets供给者。一个网络软件供货商有必要百分之百地完结Windows Sockets标准才干做到现Windows Sockets兼容。任何能够与Windows Sockets兼容完结协同作业的运用程序就被认为是具有Windows Sockets接口。咱们称这种运用程序为Windows Sockets运用程序。Windows Sockets标准界说并记载了怎么运用API与Internet协议族(IPS,一般咱们指的是TCP/IP)衔接,尤其要指出的是一切的Windows Sockets完结都支撑流套接口和数据报套接口.运用程序调用Windows Sockets的API完结彼此之间的通讯。Windows Sockets又运用基层的网络通讯协议功用和操作体系调用完结实践的通讯作业。
跟着互联网技能的迅猛开展,核算机通讯给人类文明带来了天翻地覆的改变。许多情况下,人们的日常作业需求凭借文件传输来完结。但大多数文件传输功用都需求凭借移动磁盘等硬件设备或Internet上的服务器才干完结。这就给那些具有大规划内部网络的用户造成了许多问题,如糟蹋资金、糟蹋网络资源、病毒侵略、降低了作业功率等。为了便利局域网内主机的资源同享,需求开发一个依据局域网的文件传输东西,在内部网络中完结文件交流。
核算机文件归于文件的一种,与一般文件载体不同,核算机文件是以核算机硬盘为载体存储在核算机上的信息调集。文件可所以文本文档、图片、程序等等。文件一般具有三个字母的文件扩展名,用于指示文件类型(例如,图片文件常常以JPEG格局保存而且文件扩展名为.jpg)。文件传输需求通过两个进程,一是网络的链接;二是文件的传输。
在数据库运用中,数据的贮存办理功用,是由服务器程序和客户运用程序别离独立进行的,前台运用能够违背的规矩,而且一般把那些不同的(不论是已知仍是不知道的)运转数据,在服务器程序中不会集完结,例如拜访者的权限,编号能够重复、有必要有客户才干树立定单这样的规矩。一切这些,关于作业在前台程序上的终究用户,是“通明”的,他们无须干预(一般也无法干与)背面的进程,就能够完结自己的一切作业。在客户服务器架构的运用中,前台程序不是非常“瘦弱”,费事的工作都交给了服务器和网络。在C/S体系的下,数据库不能实在成为公共、专业化的库房,它遭到独立的专门办理。
在Internet上衔接的一切核算机,从大型机到微型核算机都是以独立的身份呈现,咱们称它为主机。为了完结各主机间的通讯,每台主机都有必要有一个仅有的网络地址。就好像每一个住所都有仅有的门牌相同,才不至于在传输材料时呈现紊乱。
Internet的网络地址是指连入Internet网络的核算机的地址编号。所以,在Internet网络中,网络地址仅有地标识一台核算机。
接纳来自客户端的链接的音讯,因为主线程创立了一个接纳客户端恳求的线程,当有衔接恳求抵达时,向主线程发送此音讯。
其次,传统的C/S结构的软件需求针对不同的操作体系体系开发不同版别的软件,因为产品的更新换代非常快,代价高和低功率现已不适应作业需求。在JAVA这样的跨渠道言语呈现之后,B/S架构更是强烈冲击C/S,并对其构成要挟和应战。
客户端(Client)或称为用户端,是指与服务器相对应,为客户供给本地服务的程序。一般安装在一般的客户机上,需求与服务端彼此配合运转。因特网开展今后,较常用的用户端包含了如万维网运用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。
本体系既训练了咱们的实践着手才干,使咱们将大学四年所学的理论常识与实践开发相结合,又引导咱们进行了一次模仿实践产品的开发,关于咱们今后作业才干的培育具有重要的含义。
现在,国内外企业对局域网的文件传输体系知道和运用情况并不好,各个企业单位在局域网内完结文件传输,资源同享还有很大的缺点。技能无论是从理论上或实践上都还不行完善。文件传输体系因为比较杂乱,可变要素较多,安全性低,因而开展还不老练。
函数阐明accept()用来承受参数s的socket连线。参数s的socket必需先经bind()、listen()函数处理过,当有连线进来时accept()会回来一个新的socket处理代码,往后的数据传送与读取便是经由新的socket处理,而本来参数s的socket能持续运用accept()来承受新的连线要求。连线成功时,参数addr所指的结构会被体系填入长途主机的地址数据,参数addrlen为scokaddr的结构长度。