回到首页|无忧论文仓库|兰州学生网LOGO
会员登录
广告推荐
热门论文
·Money and Marriage——The matrimonial 
·校园网站设计
·开题报告范文
·论毛泽东的创新思想
·毕业设计-开题报告
·关于我国上市公司会计信息披露的几点思考
·毛泽东思想与中国共产党的伟大理论创新
·论抗生素的发展及市场
·浅析网络安全技术
·开题报告范例
UNIX TCP/IP网络文件传输的实现
作者: 来源: 责任编辑: 更新日期:2006-5-23 12:23:26
UNIX TCP/IP网络文件传输的实现
 

摘要:该文着重探讨如何利用UNIX TCP/IP所提供的套接字接口和网络库例程来编制用户应用程序,并在此基础叟实现了网络文件传输。
一、引言
随着计算机应用的不断深入和信息交流的不断增加,许多UNIX系统用户越来越感到,仅由一台高性能微机运行UNIX,带多台至几十台终端已不能满足应用的需要,因此,越来越多的系统正在向多用户网络方向发展。
UNIX TCP/IP网络就是解决上述矛盾的一种系统。它将多台运行UNIX系统的超级微机用电缆线连接起来,采用TCP/IP协议进行通信,任一微机所连接的终端可登录到网上其它任一主机上进行操作,也可以通过网络提供的功能,进行其它网络操作。
SCO UNIX TCP/IP网络系统为用户提供了许多通信功能,它包括远程登录、文件传输、邮件发送以及其它有关网络应用、管理及控制方面的命令。这些功能均在命令级实现,即用户只需在命令提示符下键入相应的命令,即可完成相应的操作。但是,有许多应用系统对网络功能的调用是在应用程序运行过程中的,仅通过命令接口是不能完全满足应用的需要的,因此,用户必须通过网络提供的接口编制自己的网络应用程序。SCO UNIX TCP/IP为用户提供了一组套接字接口,本文将介绍如何通过调用套接字以及TCP/IP提供的库函数编制一个文
件传输应用程序。
二、套接字接口及调用
1.套接字接口
一个用户应用系统,即一个客户进程,通常需要与一个完成其功能有的服务进程进行通信。在UNIX系统中完成这种进程间通信的一个方法是通过管道(PIPES)来实现的,UNIX网络运行系统也提供一个更灵活的强有力的独立子系统以支持一个分布式环境的进程间通信,这个子系统就称作套接字(SOCKET)接口。套接字接口构成了在单个主机内及整个网际间的编程界面和进程间通信的基础。
一个套接字是一个软件实体,它为进程间通信提供了基本的构件,它是进程间通信的端点,对互连网地址来说,下面的一对全名套接字唯一确定了通信双方的连接:
<<node.port><node.port>>
其中,node是4字节地址,port为2字节长,左边的是本地套接字,右边是远程或外部套接字。
套接字具有类型,其类型是由面向程序员的通信特性决定的,它与套接字支持的特殊协议有关。时程通常是在相同类型的套接字之间通信。目前程序员可使用下面三种类型的套接字。
·流套接字:提供双向的、可靠的、有序的且不重复的无记录边界的数据流,它是最常用的一种类型。
·数据报套接字:它支持双向数据流,但记录边界被保持,接收进程必须重新定序,消除重复并提供可靠保证,它适用于单个报文的可靠性不重要的场合。
·原始套接字:使用原始套接字,程序员能访问低层通信协议(如IP),它不是为一般用户设置的,而是为了开发新的通信协议,或是为了访问现有协议中较隐蔽功能而设置的。
2.套接字的调用
TCP/IP的系统调用主要是通过对套接字的操作来实现的,下面给出了部分常用的TCP/IP系统调用:
·scoket 创建套接字
·bind 为套接字赋一个名字
·connect 启动一个连接
·accept 接受连接
·listen 监听连接
·write/send 发送信息
·read/recv 接收信息
·close 关闭套接字
三、UNIX网络库例程的应用
网络库例程的主要用途是确定和建立网络地址。
在客户方与服务方进行通信前,在远程节点上确定一个服务需要进行多级映射。为便于使用,每个服务被指定一个名字,这个名字必须被翻译成网络地址,最后,该地址被用来确定一个物理位置和到服务的路径。可见,确定远程节点上的一个服务需要三级映射,这三级映射的具体实现随着网络结构不同而有所变化。
UNIX网络库例程是C程序语言函数调用,它提供下列映射的标准例程:
·主机名字到网络地址
·网络地址到网络号
·协议名字到协议号
·服务名字到端口号及服务器使用的适当协议
1.映射主机名字
例程gethostbynamne,gethostbyaddr,gethostent均可完成主机名字与地址映射,它们分别将主机名或节点地址映射成一个hostent结构:
struct hostent{
char * h_name;/* 正式主机名 */
char * * h_aliasea;/* 别名表 */
int h_addrtype;/* 主机的地址类型 */
int h_length;/* 地址长度*/
char * * h_addr_list; /* 地址表 */
#define h_addr h_addr_list[0]
}
2.映射网络名字
getnetbyname, getnetbynumber,getnetent是分别用于映射网络名字的例程,使用这些例程,可将网络名映射到网络号,或把网络号映射到网络名,并返回一个netent结构:
struct netent{
char * n_name;/* 正式的网络名 */
char * * n_aliasea;/* 别名表 */
int n_addrtype;/* 网络地址类型 */

本论文共2页,当前在第1页  1  2  

打印本文 收藏本文 返回顶部 关闭窗口
   论文分类导航
经济学 管理学 会计审计 法学 理学 医药生理 社会政治
发展战略  |  国际经济
国内经济  |  经济理论
财政税收  |  证券金融
基本理论  |  人力资源
行政管理  |  工商管理
财务管理  |  公共管理
会计理论  |  管理会计
成本会计  |  电算会计
会计研究  |  审计核算
民法  |  经济法
刑法  |  国际法
国家法  |  司法制度
行政法  |  法学理论
生命科学  |  物理学
地质地理  |  农林学
数学  |  化学
药学  |  临床医学
医学  |  生理心理
社会主义  |  资本主义
马列主义  |  毛概邓论
民族主义  |  台湾问题
人口问题  |  伦理道德
农村问题  |  其它相关
教育学 工学 计算机 艺术 哲学 文化 文学
教育理论  |  学历教育
职业教育  |  教育心理
学科教育  |  英语教学
通  信  学  |  电子机械
工程建筑  |  水利电力
材料工程  |  交通运输
工业设计  |  环境工程
计算机应用
计算机理论
计算机网络
美术  |  艺术理论
音乐  |  电视电影
美学  |  国学
 逻 辑 学  |  中国哲学
西方哲学  |  思想哲学
传统文化  |  当代中国
西方文化  |  社会文化
文化研究  |  文化发展
语言文学  |  古代文学
现代文学  |  新闻传播
设为首页 |  收藏本站 |  网站帮助 |  网站地图 |  意见反馈 |  关于无忧 |  信誉保证 |  联系办法
互联网信息服务(ICP)备案:陇ICP备05005179/06001620 不良信息举报中心