unix tcp-ip网络文件传输的实现

unix tcp-ip网络文件传输的实现

ID:22681246

大小:58.50 KB

页数:6页

时间:2018-10-30

unix tcp-ip网络文件传输的实现  _第1页
unix tcp-ip网络文件传输的实现  _第2页
unix tcp-ip网络文件传输的实现  _第3页
unix tcp-ip网络文件传输的实现  _第4页
unix tcp-ip网络文件传输的实现  _第5页
资源描述:

《unix tcp-ip网络文件传输的实现 》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、UNIXTCP/IP网络文件传输的实现摘要:该文着重探讨如何利用UNIXTCP/IP所提供的套接字接口和网络库例程来编制用户应用程序,并在此基础叟实现了网络文件传输。一、引言随着计算机应用的不断深入和信息交流的不断增加,许多UNIX系统用户越来越感到,仅由一台高性能微机运行UNIX,带多台至几十台终端已不能满足应用的需要,因此,越来越多的系统正在向多用户网络方向发展。UNIXTCP/IP网络就是解决上述矛盾的一种系统。它将多台运行UNIX系统的超级微机用电缆线连接起来,采用TCP/IP协议进行通信,任一微机所连接的终端可登录到网上其它任一主机上进行操作,也可以通过网络提供的功能,进行其它网络操

2、作。SCOUNIXTCP/IP网络系统为用户提供了许多通信功能,它包括远程登录、文件传输、邮件发送以及其它有关网络应用、管理及控制方面的命令。这些功能均在命令级实现,即用户只需在命令提示符下键入相应的命令,即可完成相应的操作。但是,有许多应用系统对网络功能的调用是在应用程序运行过程中的,仅通过命令接口是不能完全满足应用的需要的,因此,用户必须通过网络提供的接口编制自己的网络应用程序。SCOUNIXTCP/IP为用户提供了一组套接字接口,本文将介绍如何通过调用套接字以及TCP/IP提供的库函数编制一个文件传输应用程序。二、套接字接口及调用1.套接字接口一个用户应用系统,即一个客户进程,通常需要与

3、一个完成其功能有的服务进程进行通信。在UNIX系统中完成这种进程间通信的一个方法是通过管道(PIPES)来实现的,UNIX网络运行系统也提供一个更灵活的强有力的独立子系统以支持一个分布式环境的进程间通信,这个子系统就称作套接字(SOCKET)接口。套接字接口构成了在单个主机内及整个网际间的编程界面和进程间通信的基础。一个套接字是一个软件实体,它为进程间通信提供了基本的构件,它是进程间通信的端点,对互连网地址来说,下面的一对全名套接字唯一确定了通信双方的连接:<<node.port><node.port>>其中,node是4字节地址,port为2字节长,左边的

4、是本地套接字,右边是远程或外部套接字。套接字具有类型,其类型是由面向程序员的通信特性决定的,它与套接字支持的特殊协议有关。时程通常是在相同类型的套接字之间通信。目前程序员可使用下面三种类型的套接字。·流套接字:提供双向的、可靠的、有序的且不重复的无记录边界的数据流,它是最常用的一种类型。·数据报套接字:它支持双向数据流,但记录边界被保持,接收进程必须重新定序,消除重复并提供可靠保证,它适用于单个报文的可靠性不重要的场合。·原始套接字:使用原始套接字,程序员能访问低层通信协议(如IP),它不是为一般用户设置的,而是为了开发新的通信协议,或是为了访问现有协议中较隐蔽功能而设置的。2.套接字的调用T

5、CP/IP的系统调用主要是通过对套接字的操作来实现的,下面给出了部分常用的TCP/IP系统调用:·scoket创建套接字·bind为套接字赋一个名字·connect启动一个连接·accept接受连接·listen监听连接·write/send发送信息·read/recv接收信息·close关闭套接字三、UNIX网络库例程的应用网络库例程的主要用途是确定和建立网络地址。在客户方与服务方进行通信前,在远程节点上确定一个服务需要进行多级映射。为便于使用,每个服务被指定一个名字,这个名字必须被翻译成网络地址,最后,该地址被用来确定一个物理位置和到服务的路径。可见,确定远程节点上的一个服务需要三级映射,

6、这三级映射的具体实现随着网络结构不同而有所变化。UNIX网络库例程是C程序语言函数调用,它提供下列映射的标准例程:·主机名字到网络地址·网络地址到网络号·协议名字到协议号·服务名字到端口号及服务器使用的适当协议1.映射主机名字例程gethostbynamne,gethostbyaddr,gethostent均可完成主机名字与地址映射,它们分别将主机名或节点地址映射成一个hostent结构:structhostent{char*h_name;/*正式主机名*/char**h_aliasea;/*别名表*/inth_addrtype;/*主机的地址类型*/inth_length;/*地址长度*/c

7、har**h_addr_list;/*地址表*/#defineh_addrh_addr_list[0]}2.映射网络名字getbyname,getbynumber,getent是分别用于映射网络名字的例程,使用这些例程,可将网络名映射到网络号,或把网络号映射到网络名,并返回一个ent结构:structent{char*n_name;/*正式的网络名*/char**n_aliasea;/*别名表*/

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

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

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