客戶端服務(wù)器程序范例_第1頁
客戶端服務(wù)器程序范例_第2頁
客戶端服務(wù)器程序范例_第3頁
客戶端服務(wù)器程序范例_第4頁
客戶端服務(wù)器程序范例_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Tpinit /傳遞客戶認(rèn)證信息Tpalloc /申請緩沖區(qū)Tpcall /調(diào)用服務(wù)Tpfree/釋放指向緩沖區(qū)的指針Tpsvrinit/服務(wù)啟動前的一個初始化Tpsvrdone/關(guān)閉服務(wù)之前自動調(diào)用Tpreturn /響應(yīng)后返回信息char *tpalloc(char *type,char *subtype,long size)Type 用于指定緩沖區(qū)類型,可取值STRING FML XML等Subtype 用于指定緩沖區(qū)子類型,僅在分配VIEW緩沖區(qū)時,指定對應(yīng)的C結(jié)構(gòu)名,對于其它緩沖區(qū)來說,填NULLSize 是緩沖區(qū)大小,以字節(jié)為單位,如1024表示分配1KB緩沖區(qū)Tpalloc 返還

2、分配緩沖區(qū)的指針,返還NULL標(biāo)識分配失敗void tpfree(char *ptr)Ptr是要釋放的緩沖區(qū)的指針Tpfree沒有返還值,也就是說不用判斷它是否成功的釋放了緩沖區(qū)int tpcall(char *svc,char *idata,long ilen,char *odata,long *olen,long flags)Svc 是要調(diào)用的服務(wù)名Idata 是請求緩沖區(qū)指針,ilen是請求緩沖區(qū)長度Odata 是指向響應(yīng)緩沖區(qū)指針的指針,使用雙重指針的目的是便于動態(tài)調(diào)整響應(yīng)緩沖區(qū)的大小Client:/*(c) 2003 BEA Systems, Inc. All Rights Rese

3、rved. */*Copyright (c) 1997 BEA Systems, Inc. All rights reserved THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF BEA Systems, Inc. The copyright notice above does not evidence any actual or intended publication of such source code.*/* #ident"(#) samples/atmi/simpapp/simpcl.c$Revision: 1.5 $&quo

4、t; */#include <stdio.h>#include "atmi.h"/* TUXEDO Header File */#if defined(_STDC_) | defined(_cplusplus)main(int argc, char *argv)#elsemain(argc, argv)int argc;char *argv;#endifchar *sendbuf, *rcvbuf;long sendlen, rcvlen;int ret;if(argc != 2) (void) fprintf(stderr, "Usage: simp

5、cl stringn");exit(1);/* Attach to System/T as a Client Process */向服務(wù)器傳遞客戶認(rèn)證信息if (tpinit(TPINIT *) NULL) = -1) (void) fprintf(stderr, "Tpinit failedn");exit(1);sendlen = strlen(argv1);/* Allocate STRING buffers for the request and the reply */分配緩沖區(qū)if(sendbuf = (char *) tpalloc("ST

6、RING", NULL, sendlen+1) = NULL) (void) fprintf(stderr,"Error allocating send buffern");tpterm();exit(1);if(rcvbuf = (char *) tpalloc("STRING", NULL, sendlen+1) = NULL) (void) fprintf(stderr,"Error allocating receive buffern");tpfree(sendbuf);/釋放指向緩沖區(qū)的指針tpterm();exi

7、t(1);(void) strcpy(sendbuf, argv1);/* Request the service TOUPPER, waiting for a reply */調(diào)用服務(wù)ret = tpcall("TOUPPER", (char *)sendbuf, 0, (char *)&rcvbuf, &rcvlen, (long)0);if(ret = -1) (void) fprintf(stderr, "Can't send request to service TOUPPERn");(void) fprintf(std

8、err, "Tperrno = %dn", tperrno);tpfree(sendbuf);tpfree(rcvbuf);tpterm();exit(1);(void) fprintf(stdout, "Returned string is: %sn", rcvbuf);/* Free Buffers & Detach from System/T */tpfree(sendbuf);tpfree(rcvbuf);tpterm();return(0);服務(wù)端常用函數(shù)簡介int tpsvrinit(int argc,char *argv)TUXED

9、O服務(wù)在啟動過程中要經(jīng)歷一個初始化階段,這個時候服務(wù)回調(diào)tpsvrinit()方法進(jìn)行全局初始化,它類似于C+的構(gòu)造函數(shù),給程序員提供了一個打開全局資源(數(shù)據(jù)庫,消息隊列,文件系統(tǒng),socket)和初始化全局變量的好機會int tpsvrdone(void)對應(yīng)tpsvrinit,在關(guān)閉服務(wù)時被自動調(diào)用,類似C+的析構(gòu)函數(shù),釋放初始化打開的資源void tpreturn(int rval,long rcode,char *data,long len,long flags)Data 是要返回的類型緩沖區(qū)指針,len是緩沖區(qū)的長度Flags 是標(biāo)志位,目前尚未啟用,必須置為0Rcode是用戶自定義

10、的整數(shù),可以隨tpreturn()一起返回,客戶機通過全局變量tpurcode來得到這個值Rval 是服務(wù)處理狀態(tài)位,不用關(guān)注int userlog(char *formatarg)此函數(shù)和printf的用法一致,服務(wù)端可以用此函數(shù)記錄日志,存放在ULOG.mmddyy文件中,不建議這樣使用,TUXEDO每天會自動生成系統(tǒng)日志放在ULOG.mmddyyServer:/*(c) 2003 BEA Systems, Inc. All Rights Reserved. */*Copyright (c) 1997 BEA Systems, Inc. All rights reserved THIS I

11、S UNPUBLISHED PROPRIETARY SOURCE CODE OF BEA Systems, Inc. The copyright notice above does not evidence any actual or intended publication of such source code.*/* #ident"(#) samples/atmi/simpapp/simpserv.c$Revision: 1.5 $" */#include <stdio.h>#include <ctype.h>#include <atmi

12、.h>/* TUXEDO Header File */#include <userlog.h>/* TUXEDO Header File */* tpsvrinit is executed when a server is booted, before it begins processing requests. It is not necessary to have this function. Also available is tpsvrdone (not used in this example), which is called at server shutdown

13、 time.*/#if defined(_STDC_) | defined(_cplusplus)tpsvrinit(int argc, char *argv)#elsetpsvrinit(argc, argv)int argc;char *argv;#endif/* Some compilers warn if argc and argv aren't used. */argc = argc;argv = argv;/* userlog writes to the central TUXEDO message log */userlog("Welcome to the si

14、mple server");return(0);/* This function performs the actual service requested by the client. Its argument is a structure containing among other things a pointer to the data buffer, and the length of the data buffer.*/#ifdef _cplusplusextern "C"#endifvoid#if defined(_STDC_) | defined(_cplusplus)TOUPPER(TPSVCINFO *rqst)#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論