9512.net
甜梦文库
当前位置:首页 >> 计算机软件及应用 >>

tuxedo文件传输



TUXEDO 在文件传输中的应用 发布于:软件开发网 来源:Internet 作者:网络收集 时间:2008-12-18 点击:

1 引言 近几年来,以交易中间件为框架基础的三层客户机/服务器模式已被广泛证 实为建立开放式关键业务应用系统的最佳环境。 TUXEDO 是美国 BEA 公司的一种交易中间件产品,它在银行、电信、邮政、 金融证券等大规模关键事务处理领域中有着广泛的应用。 它能够在 C/S 环境下整 合各种异构平台,通过联机事务处理机制,保证交易的完整性和数据的一致性。 BEA TUXEDO 是在企业、Internet 这样的分布式运算环境中开发和管理三层结构 的客户/服务器型关键任务应用系统的强有力工具。 BEA TUXEDO 采用三层结构的客户机/服务器模式组件软件模型,该结构利用 交易中间件将应用的业务逻辑、表示逻辑和数据分为三个不同的处理层:客户为 第一表示逻辑层, 实现用户交互和数据表示, 第二层的逻辑业务层为应用的主体, 负责业务的逻辑处理,第三层数据层负责对数据库的检索、读取和更新等操作。 交易中间件作为构造三层结构应用系统的基础平台,提供了两个主要功能:负责 客户机和服务器间的联接和通讯;提供一个三层结构应用开发和运行的平台。由 此可见,交易中间件提供了一个基础的框架去帮助你建立、运行和管理一个三层 客户机/服务器模式的应用, 使你不需要从零做起, 大大缩短了应用开发的时间, 提高了应用开发的成功率。

本文以应用 TUXEDO 的同步调用 tpcall 方式和 FML 编程方式为例, 介绍了在 Windows 客户端和 Unix 服务器之间完成文件传输的方法。 客户端调用 VC 制作的 传输文件的 tuxedo 动态链接库, 实现 Windows 客户端与 Unix 服务器端传输文件 (包括上传和下载文件两种方式)的实现方法。 2 客户端应用 TUXEDO 实现文件传输方法 在客户端,首先设置客户端与服务器端在文件传输中文件块的大小、文件的 块标识等基本信息,将字节数比较大的文件分为很多小块,利用 TUXEDO 的同步 调用 tpcall 方式循环调用后台的文件处理服务,将字节数较大的文件按着块的 大小分多次传输到 UNIX 后台。下面以下载文件为例讲解使用 tuxedo 同步调用 tpcall 方式完成文件传输的例子。 首先利用 TUXEDO 的 tpalloc 申请需要使用的发送和接收缓存,使用 Fchg32 函数在缓存中放入服务器端需要的域值: 文件块的大小、 文件的标识等基本信息。 SndBuf = (FBFR32 *)tpalloc("FML32", NULL, 1024); /* 申请发送的缓存 */

iRet = Fchg32(SndBuf,BLOCKSIZE,0,(char *)&lBlockSize,0); /* 设置文件 块的大小 */ 设置完毕后,开始使用同步 tpcall 调用 UNIX 后台文件处理 FTPSVR 服务。 /* 客户端同步调用 UNIX 平台文件处理服务*/ iRet = tpcall("FTPSVR",(char *)SndBuf,0L,(char **)&RcvBuf,(long *)&len,0L); iRet = Fget32(RcvBuf, FILELEN, 0, (char *)&lFileLen, 0);/* 接收文件长 度*/ 接收文件并将第一块数据写入文件 iRet = Fget32(RcvBuf, FILEDATA, 0, pszFileBuf, (FLDLEN32 *)&lFileDataLen); fp = fopen(pszCltFileName, "wb "); /* 创建文件*/ lBlkLen = fwrite(pszFileBuf,1,lFileDataLen,fp); /* 将接收第一块数据写 入文件*/ 同时计算需要调用下载文件服务的次数,多次调用文件服务,将后续文件下载到 客户端。 lBlkNum = (lFileLen -1)/lBlockSize 1 ; for(i=2; i<lBlkNum 1;i ){ …… iRet = tpcall("FTPSVR",(char *)SndBuf,0L,(char **)&RcvBuf,(long *)&len,0L); Fget32(RcvBuf, FILEDATA, 0, pszFileBuf, (FLDLEN32 *)&lBlockSize); lBlkLen = fwrite(pszFileBuf, 1, lBlockSize, fp); …… } 3 UNIX 服务器端实现方法 在 Unix 服务器端,接收客户端发送过来的缓存内容,如:文件块的大小、 文件块内容、文件块标识等。根据文件块的标识移动文件指针来写文件,每次文 件指针移动的大小由文件块的大小决定, 并将读取的文件块的内容放入输出缓存 中,并返回给客户端。Unix 服务器端程序例子说明如下: FTPSVR(TPSVCINFO *rqst) { ………… RcvBuf = (FBFR32 *)rqst->data; /*指向接收客户端的缓存*/ iRet = Fget32(RcvBuf, BLOCKID, 0, (char *)&lBlockID, 0); /* 接收 client 发送的块标识*/ fp = fopen(pszSvrFileName, "rb"); /* 打开文件,准备读取*/ (fseek(fp, (lBlockID-1)*lBlockSize, 0)!=0) /* 根据块标识移动文件指针 */ lReadLen=fread(pszFileBuf, 1, lBlockSize, fp); /* 读取文件块*/ Fchg32(SndBuf, FILEDATA, 0, pszFileBuf, (FLDLEN32 )lReadLen); /* 将文

件块的内容方式放入 tuxedo 申请的缓存中*/ tpreturn(TPSUCCESS, 0, (char *)SndBuf, 0L, 0); 户端*/ } 4 WINDOWS 平台文件传输的设计 4.1 WINDOWS 客户端动态链接库的实现

/* 将输出缓存返回给客

使用 PowerBuilder、Delphi、VB 等软件不能直接调用 C 语言源代码,它们 只能调用动态链接库文件。下面我们讲述如何使用 VC 6.0 将 Windows 客户端的 文件传输的 C、TUXEDO 代码制作成动态链接库供 Power Builder、Delphi、VB 等程序调用。 使用 VC 可以制作三种 DLL,分别是 (1)Non-MFC Dlls (2).Regular Dlls (3)Extension Dlls Non-MFC DLL:指的是不用 MFC 的类库结构,直接用 C 语言写的 DLL,其输出 的函数一般用的是标准 C 接口,并能被非 MFC 或 MFC 编写的应用程序所调用。因 为我们不使用 MFC 类库,所以采用 Non-MFC Dlls。 每一个 DLL 必须有一个入口点, 就象用 C 编写的应用程序, 必须有一个 main 函数一样. DllMain 就是一个缺省的函数入口。 创建一个动态链接库, 选择 File->New 菜单, 弹出 New 对话框。 Projects 在 标签页下,选择"Win32 Dynamic-Link Library"。Visual C 就会创建动态链接 库所需的工程文件。 创建 ftpfile.def 文件, 这个文件记录了可被外部应用程序使用的 DLL 库函数名 字。这些名字信息和对应的函数位置的信息将被编译进动态链接库文件中,然后 应用程序根据函数名字和函数位置对照表来找到对应的函数。ftpfile.def 内容 如下: LIBRARY "ftpfile" EXPORTS ftpfile; /*与 C 代码中的函数名称相同*/ 将 ftpfile.def、源程序 ftpfile.cpp、头文件 public.h 和 ftpfld.h、tuxedo 库文件 wtuxws32.lib 和 libwsc.lib 加入到工程中。选择 Project->add to project->files.然后开始编译动态链接库生成 ftpfile.dll。 代码样例如下: BOOL WINAPI DllMain( HMODULE hModule, DWORD dwReason, LPVOID lpvReserved ) /* 动态链接库函数入口*/ { return TRUE; }

LRESULT WINAPI ftpfile(char* CltFileName,char* SvrFileName,long lBlockSize,long lOptFlag) /* 动态链接库函数主体*/ { FBFR32 *RcvBuf,*SndBuf; /*变量声明*/ int iRet; long i,lBlkLen,len,lFileLen,lBlkNum; ………… /* 动态链接库程序主体*/ SndBuf = (FBFR32 *)tpalloc("FML32", NULL, MAXBUFLEN); /*申请发送缓存*/ if (SndBuf == NULL) { userlog("tpalloc sndbuf error errno=[%d] err=[%s]",tpstrerror(tperrno)); tpterm(); return TPALLOCERR; } RcvBuf = (FBFR32 *)tpalloc("FML32", NULL, MAXBUFLEN);/*申请接收缓存*/ iRet = Fchg32(SndBuf,BLOCKSIZE,0,(char *)&lBlockSize,0); /*把块大小放 入发送缓存*/ if (iRet <0){ /*错误处理*/ tpfree((char *)SndBuf); tpfree((char *)RcvBuf); tpterm(); return FCHGERR; } iRet = Fchg32(SndBuf,OPTFLAG,0,(char *)&lOptFlag,0); …………………………… }/* 程序主体结束*/ 4.2 WINDOWS 客户端动态链接库的调用 以 Power Builder7.0 为例,讲述如何在 Power Builder 中调用文件传输的客户 端动态链接库。 首先,在 Power Builder 声明该函数,声明如下: Function Integer ftpfile(string CltFileName,string SvrFileName,long lBlockSize,long lOptFlag) LIBRARY "ftpfile.dll" 然后,在程序中就可以应用了。示例如下: string CltFileName string SvrFileName long lBlockSize long lOptFlag /*设置文件上传或下载标志*/ integer iRet CltFileName="..\data\report.txt" SvrFileName="../up/form.txt"

LBlockSize=1024 LOptFlag=1 IRet = ftpfile(CltFileName,SvrFileName,lBlockSize,lOptFlag) If (iret< 0){ messagebox('系统提示','调用 ftpfile 函数错误') return } 5 结束语 本文通过分析 TUXEDO 交易中间件的同步调用 TPCALL 和 FML 编程方式, 描述 了在 Windows 和 UNIX 平台之间如何完成文件传输的方法,概述了 Windows 平台 如何制作和调用动态链接库。



更多相关文章:
Tuxedo培训教材
这是 TUXEDO 配置文件 Server Section 一个参数,在服务进程启动时,用来向服务进程传递参数。 ??MSSQ: (Multiple Server Single Queue) TUXEDO 多服务单队列机制。...
Windows平台下tuxedo应用simpapp举例
暂无评价|0人阅读|0次下载|举报文档 Windows平台下tuxedo应用simpapp举例_IT/计算机...在 MP 模式下,考虑网络传输时间、系统反应速度等因素,网络速率越大,系统负载越...
TUXEDO 超时控制全攻略
暂无评价|0人阅读|0次下载|举报文档 TUXEDO 超时控制全攻略_计算机软件及应用_...考虑网络传输时间、 系统反应速度等因素,网络速度越慢,系统负载越重,取值越大;...
TUXEDO简介及命令介绍
TUXEDO简介及命令介绍_计算机软件及应用_IT/计算机_专业资料。Tuxedo 是一个客户机 /服务器的 ― 中间件 ‖ 产品,它在客户机和服务器之间进行调 节,以保证正确...
TUXEDO培训教材 (上)
TUXEDO 的安全控制机制一种。 ??CLOPT:(Command Line Option)命令行参数。这是 TUXEDO 配置文件 Server Section 一个参数,在服务进程启动时,用来向服务进程传递...
TUXEDO基础教程
暂无评价|0人阅读|0次下载|举报文档 TUXEDO基础教程_计算机软件及应用_IT/计算机...它为每一个消息提供了一个控制块,以便 TUXEDO/Q 和应用程序对消息的传输方式...
第八章:TUXEDO的通讯方式
第八章:TUXEDO 的通讯方式 TUXEDO 中的客户端与服务端之间可以采用的通讯方式有...一个文件分块,每调用一次 TPCALL()发送一块数据,把一个文件从 客户端传送到...
TUXEDO培训教材(中)
暂无评价|0人阅读|0次下载|举报文档TUXEDO培训教材(中)_计算机软件及应用_IT/...tpdiscon(cd); 断开连接 (2) 会话通讯的基本原理 客户端与服务端为传输大...
tuxedo中间件
暂无评价|0人阅读|0次下载|举报文档 tuxedo中间件_小学教育_教育专区。tuexdo中间...BEA TUXEDO 还提供信息加密服务,允许 对网络上传输的 信息按 RSA 的 RC4 算法...
Tuxedo的封装
还有可以生成文件传输。 jacobwoo6 [普通用户] 大家可以专门讨论一下Tuxedo的封装问题吗? Tuxedo的封装问题吗 Re: 大家可以专门讨论一下Tuxedo的封装问题吗? ...
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图