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基本命令详细说明 - 1 tmloadcf ? 检查 UBBCONFIG 文件的内容及格式 ? 将文本格式的 UBBCONFIG 文件编译生成二进制文件 ? 必须在主机上运行 ? 格...
tuxedo监控实施文档
tuxedo监控实施文档_计算机软件及应用_IT/计算机_专业资料。tuxedo监控实施文档(需要对tuxedo有一点点基础的人看,如果没有基础,可以查看我原来上传的几份关于tuxedo的...
tuxedo常用命令整理
tuxedo常用命令整理 - Tuxedo 常用命令整理 一、使用命令 1.使用 buildclient 构造 client 端程序 步骤: 1.client 端程序包含 atmi.h 头文件...
Tuxedo日常维护文档
Tuxedo日常维护文档 - tuxedo常见命令,tuxedo日常维护,tuxedo常见问题解决... Tuxedo日常维护文档_IT/计算机_专业资料。tuxedo常见命令,tuxedo日常维护,tuxedo常见问题解决 ...
tuxedo命令和配置的详细解释及应用实例
tuxedo命令和配置的详细解释及应用实例 - tuxedo命令和配置的详细解释及应用实例 tuxedo命令和配置的详细解释及应用实例 域的组成 BDMCONFIG:二进制配置文件 DMADM:....
客户端TUXEDO的安装设置及注意事项
客户端TUXEDO的安装设置及注意事项 - 客户端 TUXEDO 的安装设置及注意事项 一、WINDOWNS98 环境 1、运行客户端 TUXEDO 软件存放目录下的\DISK1\Setup...
Tuxedo基本参数配置说明
Tuxedo基本参数配置说明 - Tuxedo 基本参数配置说明 2008-12-08 17:23:49 标签:Tuxedo 一、Tuxedo 基本命令 #1. 设置环境变量 TUXD...
tuxedo安装手册
把 tuxedo111120_32_Linux_01_x86.bin 文件传到/home/tuxedo 文件下 记得改一下权限 chmod 777 tuxedo111120_32_Linux_01_x86.bin 传完之后 reboot 启动一下...
压力测试-TUXEDO配置文件修改增加并发数
压力测试-TUXEDO配置文件修改增加并发数_计算机软件及应用_IT/计算机_专业资料。压力测试-TUXEDO配置文件修改增加并发数编写目录:为了方便以后压力测试人员可以自己修改并...
Tuxedo基本命令使用
Tuxedo基本命令使用 - Tuxedo 基本命令使用 ——樊瑞 1.tmloadcf 编译 ubbsimple 配置文件文件,将配置文件 ubbsimple 编译成二进制配置文件 使用示例:...
更多相关标签:

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

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