- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
BEA Tuxedo的通信缓冲区
BEA Tuxedo的通信缓冲区
■北京 经乾
在编写通信程序时,一般使用缓冲区在两个通信实体之间传递数据。以C语言的socket通信为例,客户机使用char sendbuf[1024]分配一个大小为1K字符缓冲区,然后将要传递的数据复制sendbuf中,再调用write函数将它写到socket。为了避免溢出,一般将sendbuf定义得很大,这样不但浪费空间,而且还必须告诉write函数sendbuf中实际有多少字节需要传递。这些问题在Tuxedo中也是不可避免的,但幸运的是,Tuxedo提供了多种缓冲区类型以及FML函数,从而大大地简化了通信应用程序的开发。
Tuxedo提供了四种缺省的缓冲区类型:CARRAY、STRING、VIEW、FML,它们的特性如下表所示(其中VIEW和FML分为16位和32位两类):
缓冲区名称 描述 长度 加解密 使用 效率 灵活 CARRAY 字符数组,同C语言中的字符缓冲区 定长 无 简单
↑
↓
复杂 高
↑
↓
低 死板
↑
↓
灵活 STRING 字符串,同CARRAY,但可变长 变长 有 VIEW 视图,同C语言中的结构 定长 有 FML 字段缓冲区,由“字段标识/值”构成 变长 有 1.CARRAY的使用
在下面的例子中,左侧的客户程序从System/T申请的一块256K的CARRAY缓冲区,然后调用服务器上的CARRAY_SERV服务;右侧CARRAY_SERV服务读取serv.c文件,写到缓冲区中,并将其返回给客户程序;客户程序将缓冲区内容写到tmp.txt文件中。由于CARRAY是定长的,所以在tpalloc()、tpcall()和tpreturn()调用中都必须指定缓冲区的长度。
2.STRING的使用
simpapp就是使用STRING来传递数据的。在下面的例子中,左侧客户程序申请了一块STRING类型的缓冲区buf,然后将sendstr复制到buf中,再调用服务器上的STRING_SERV服务;右侧STRING_SERV服务将缓冲区内的字符转换成大写后,返回给客户程序。
由于STRING缓冲区是可变长的,所以在tpalloc()、tpcall()和tpreturn()等调用中都不必指定buf的长度,即便sendstr超出了buf的长度,执行strcpy()时也不会出错,此时buf将自动扩展到实际长度。
3.FML的使用
FML是Field Manipulation Language的缩写,它是一组用于定义和管理类型缓冲区的Tuxedo函数。BEA Tuxedo提供了两种标准类型缓冲区:FML和VIEW。VIEW可以看作是FML的结构化版本。在FML类型缓冲区中,每个字段都由一个字段标识符(FLDID)来确定。在16位的FML中,FLDID是一个16位整数,在32位的FML中,FLDID是一个32位整数。下面是FML类型缓冲区的格式:
若fldid为定长字段,它的值是data;若fldid是可变长字段,它的长度是len,值是len后面的data。FML支持的字段类型有:short、long、char、float、double、string、carray和缓冲区指针。Tuxedo提供了一个创建类型缓冲区的工具:Tuxdev,通过它可以定义FML和VIEW。
作为FML运用的例子,这里介绍一个通信录传输程序。该程序的客户部分将好友编号、姓名、手机号放入FML缓冲区,然后请求服务;服务器接收到请求后,从FML缓冲区中取出这三类信息,再把它们插入数据库。为此,使用Tuxdev创建一个名为friend的FML文件,其内容如右图所示。Name列定义了字段标识;Number是一个唯一的整数(对于16位的FML,可以使用101——8191之间的任何值);Type定义了字段的数据类型。点击Build菜单中的Create,即可生成一个名为friend.h的标准C语言头文件。由于客户程序和服务程序都用到了FRIEND_ID等常量,所以都必须包含friend.h。
在上面的程序中,左下角为客户程序,它定义了一个FBFR类型的指针fbfr,用于指向tpalloc()调用分配的FML缓冲区,Fadd()调用将FRIEND_ID、FNAME、FMOBILE和它们的值依次放入fbfr指向的FML缓冲区,tpcall()调用请求的FRIEND_ADD服务;右下角为服务程序,在FRIEND_ADD服务中,Fvall()和Fget()调用从请求缓冲区中取出数据,嵌入式SQL语句EXEC SQL insert into…将通信录数据插入数据库。
4.VIEW的使用
VIEW和FML大致相同。在FML缓冲区中,字段是独立的,而在VIEW缓冲区中,字段被组织成一个C语言的结构,仍以3中通
您可能关注的文档
- Analysis of Huck’s Character in Adventures of Huckleberry Finn英语专业毕业论文.doc
- Android的UI结构研究.doc
- android_source讲解.pptx
- Angers 法国 昂热市 简介 法语.doc
- anova-华中科大.ppt
- ANSI 平垫圈尺寸规格表.doc
- answered他沉思片刻后才回答.ppt
- Ansys分析 Hill屈服准则.ppt
- ANSYS桥壳失效原因分析中的应用.doc
- Anta店长综合培训.ppt
- bea实战集锦LDAP.ppt
- bea实战集锦MultiCast Webinar.ppt
- bea门户建议书.doc
- BEC中级口语讲义.doc
- bed_贷款业务管理.ppt
- being+-ed分词和完成形式.ppt
- BENEFIT PLAN -Annual Leave福利改善计划之年假制度.doc
- Berufsbildung für nachhaltige Entwicklung 职业教育促进可持续发展.ppt
- BENZ培训资料.ppt
- Better Investing Portfolio Manager:Improving Portfolio Management Decisions 改善投资组合管理的决策.ppt
最近下载
- 2025年上海市崇明区中考二模英语试题(含答案).pdf VIP
- 第4课 乡愁(余光中)课件(共19张PPT) 2024-2025学年统编版语文九年级上册.pptx VIP
- 计算机网络网络安全PPT(完整版).pptx VIP
- 2025年邮政职业技能鉴定考试(储汇业务员·高级)历年参考题库含答案详解(5卷).docx VIP
- 供应室去污区课件.pptx VIP
- 三年级快乐阅读社团活动教案.docx VIP
- 预决算管理制度.docx VIP
- 《大学生恋爱心理》PPT课件.ppt VIP
- GB50017-2017钢结构设计标准.doc VIP
- 2025-2026学年初中信息科技冀教版2024七年级全一册-冀教版2024教学设计合集.docx
文档评论(0)