TUXEDO的客戶端編程_第1頁
TUXEDO的客戶端編程_第2頁
TUXEDO的客戶端編程_第3頁
TUXEDO的客戶端編程_第4頁
TUXEDO的客戶端編程_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第七章:的客戶端編程第七章:的客戶端編程 的客戶端簡介:的客戶端簡介: 有兩種客戶端: 本地客戶端和遠程客戶端。 (本地客戶端): 是指與服務器在同一臺機器上,不用通過網(wǎng)絡 就可以訪問到服務器的客戶端 。 (本地客戶端):是指要通過網(wǎng)絡才可以訪問到服務器的客戶端。 下圖為應用系統(tǒng)的客戶端訪問服務器上的服務的過程圖。 說明: ( ) 用于指產品的客戶端部分 ( ) 系統(tǒng)自帶的一個,它偵聽一個指定的端口,最初與該 建立連接 ( ) 系統(tǒng)自帶的一個,由它處理與 之間的通訊。 (公告板) 把系統(tǒng)的配置保存在一個共享內存中,該共享內存稱為公告板() 的管理進程,主要對公告板等進行管理 與與 建立連接的過

2、程為:建立連接的過程為: 1 調用()或() 2 采用在中指定的地址與服務端的建立連接 3 為該指定一個,并把該的偵聽端口返回給 4 采用返回的端口與指定的建立連接,并與斷開連接,這之后與 之間的通訊通過進行處理,與無關。 5 ()或()調用返回。 本地客戶端與遠程客戶端的主要區(qū)別本地客戶端與遠程客戶端的主要區(qū)別 1. 本地客戶端只能用語言或語言編寫,遠程客戶端可以用幾乎所有的編程語言編 寫。 2. 在遠程客戶端所在的機器上要安裝的客戶端軟件,并且在設置相應的環(huán)境變量; 在本地客戶端上不用 3. 用編譯遠程客戶端程序時要加 ,編譯本地客戶端則不用 與遠程客戶端有關的配置:與遠程客戶端有關的配置

3、: 1 在中要配置,即最多可以有多少個遠程客戶端同時連接 到該服務器上。 2 在中要配置: 中可帶的參數(shù)為: 參數(shù)說明: : 的偵聽端口,遠程客戶端通過該端口與服務器建立連接 : 最少啟動多少個進程 : 最多啟動多少個進程,默認值為 :每個進程可以同時與多少個遠程客戶端建立連接 如果在遠程客戶端與服務器之間傳送的數(shù)據(jù)包大?。▎挝粸樽止?jié))超過指定的參 數(shù),就自動進行數(shù)據(jù)壓縮, : 指定一個遠程客戶端的空閑時間,如果該遠程客戶端在這么長的時間內沒有做任何調用,將斷開與該遠程客戶端的連接。單位為分鐘,如果沒有指點該參數(shù),那么永遠不會自動斷開遠程客戶端的連接 : 指定遠程客戶端與建立連接的時間,如果在

4、指定的時間內還沒有建立連接,那么連接將失敗。如果沒有采用安全認證方式默認為*秒,。如果采用安全認證方式默認為*秒, :指定可以使用的端口范圍: 如果遠程客戶端要跨越防火墻才能訪問該應用系統(tǒng),在中要指定該參數(shù),指定可以使用的端口范圍,并讓防火墻允許訪問這些端口。如果不指定,會根據(jù)系統(tǒng)端口的使用情況進行分配,而分配的端口防火墻不允許通過,造成無法調用 。如下面的設置指定可用的端口范圍為 。 在遠程客戶端的機器上要設置的環(huán)境變量在遠程客戶端的機器上要設置的環(huán)境變量 (必需):客戶端在該機器上的安裝目錄 (必需):遠程客戶端通過該地址與服務器建立連接,它的值為參數(shù)的值, 如在上面的配置中為: (可選)

5、: 該客戶端的類型,如果與服務器的類型一樣,那么在它們之間進行數(shù)據(jù) 傳送時不用進行編碼解碼工作。 其他不常用的環(huán)境變量可參考的聯(lián)機文檔。 客戶端的編程模式:客戶端的編程模式: 在層結構中,是屬與表示層,表示層主要處理與用戶交互,它的功能可概括為: 、提供應用的用戶交互接口,即主要通過圖形化的用戶界面,取的用戶的輸入數(shù)據(jù) 、與 應用服務器建立連接 、調用應用服務器上的服務(),把客戶端的輸入?yún)?shù)放入輸出緩沖區(qū)。 、應用服務器調用相應的處理客戶端的請求,把處理結果通過客戶端的輸 入緩沖區(qū)返回給客戶端。 客戶端與服務端之間的通訊方式有以下幾種:客戶端與服務端之間的通訊方式有以下幾種: 、同步調用:

6、、異步調用 、會話方式: 、可靠消息隊列 、廣播方式 、發(fā)布訂閱 在下一章我們再具體介紹 的介紹的介紹 客戶端通過調用提供的編程()來編寫程序,下面介紹一些客戶端主要的 與連接的建立與斷開有關的與連接的建立與斷開有關的 為了與 建立連接 要調用()檢查該 所采用的安全方式,并根據(jù)得到的值做相應的處理,然后調用()建立與的連接,在 的結果返回 之后,調用()斷開與 的連接. () 描述: 檢查該 所采用的安全方式 參數(shù):無 返回值: :不需要認證 :需要口令認證 :需要口令認證,并且還需要應用級的認證或授權. :調用失敗, 錯誤號保存在全局變量中。 ( *) 描述: 與 建立連接 參數(shù) 返回值:

7、 失敗返回, 錯誤號保存在全局變量中。 結構體在中的定義如下結構體在中的定義如下 ; * * ; * * ; * * ; * * ; * * ; * * ; * * ; ; 說明用于安全認證中 :用于定義以何種方式通知該客戶端一個 的到來.它的值可以為: () 描述: 斷開與 建立連接 參數(shù):無 返回值: 失敗返回, 錯誤號保存在全局變量中。 與請求與請求 有關的有關的 ( *, *, , *, *, ) 描述:客戶端同步調用服務端的名為的, 參數(shù): *:的名稱 *: 輸入緩沖區(qū)的地址,客戶端傳給服務端的參數(shù)放在該緩沖區(qū)內 : 輸入緩沖區(qū)的長度 * 輸出緩沖區(qū)的地址,服務端傳給客戶端的結果放在

8、該緩沖區(qū)內 *:輸出緩沖區(qū)的長度 : 調用標志,由以下幾個: 如果調用的客戶端當前在方式下,那么不參與當前的。 如果服務端返回的緩沖區(qū)類型與客戶端定義的緩沖區(qū)()類型不一致,默認情況下,會轉換成與服務端返回的緩沖區(qū)類型一致的類型,如果設置了該,那么當出現(xiàn)這種情況時,不進行緩沖區(qū)類型轉換,并且會保錯。 默認情況下,如果客戶端有阻塞條件存在(如的中的緩沖區(qū)滿,磁盤忙等),那么客戶端會阻塞在那里,直到阻塞消除或超時出錯。如果設置了,當客戶端有阻塞條件存在時()會立刻返回并報錯. 注意只對發(fā)送請求時起作用,如果在接收服務端返回的結果時有阻塞條件存在,客戶端會在那里等待,直到阻塞消除或超時出錯 如果客戶

9、端有阻塞條件存在,客戶端會一直阻塞在那里,即使到了超時時間也不返回,但如果該客戶端是在模式下,當?shù)搅?事務的超時時間,還是會報超時錯誤并返回。 如果在進行系統(tǒng)調用時,被信號中斷,該系統(tǒng)調用會重新進行。 調用成功返回,失敗返回, 錯誤號保存在全局變量中。 ( *, *, , ) 描述: 客戶端異步調用服務端的名為的,不等服務端返回結果,程序可繼續(xù)往 下走,在某個地方調用()取的服務端的返回 參數(shù): *, *, 參數(shù)的含義與()中的一樣 可設置為:, , , . , , 的含義與與()中的一樣 :調用()的客戶端不想接收端的應答。如果設置了 :服務端不會給該客戶端發(fā)送應答。 返回值: 失敗返回,成

10、功返回一個,可作為的參數(shù),用于取應答 ( *, *, *, ) 描述:取出服務端對()的應答。 參數(shù): ()返回的 *返回緩沖區(qū)的地址,服務端傳給客戶端的結果放在該緩沖區(qū)內 *:返回緩沖區(qū)的長度 :可以是:, ,(不管的值,從服務 器的應答隊列中取第一個可用的消息), 返回值: 失敗返回,錯誤號保存在全局變量中。 ( ) 描述: 如果當前的程序不處于事務模式中,取消對()的應答, 如果處于事務模式 中,則不能取消對()的應答,該調用會失敗. 參數(shù): ()返回的 返回值: 失敗返回,錯誤號保存在全局變量中。 () 描述:返回最近發(fā)送()()或接收()的一個消息的優(yōu)先級 參數(shù):無 返回值: 消息的

11、優(yōu)先級,值越高, 優(yōu)先級越高 失敗返回, 錯誤號保存在全局變量中。 ; * * ; * * ; (; ; ) * * (, , , ); * * (); * () * (*) , , (), ); (; ; ) (, , , ); ( , ) 描述: 設置下一個要發(fā)送的消息的優(yōu)先級 參數(shù): 為相對值, 設置下一個要發(fā)送的消息的優(yōu)先級為現(xiàn)在的優(yōu)先級加上 : 為絕對值, 設置下一個要發(fā)送的消息的優(yōu)先級為 返回值: 失敗返回,錯誤號保存在全局變量中。 與請求錯誤處理有關的與請求錯誤處理有關的 *( ) 描述:返回錯誤號為的錯誤描述 參數(shù): :在中定義的全局變量,用于標識錯誤號,類似于中的 返回值:

12、失敗返回,成功返回錯誤號為的錯誤描述. ( ) 描述: 返回當前進程或線程最近調用的出錯的更詳細的描述 參數(shù):設為 返回值: 如果沒有錯誤返回,有錯誤返回錯誤描述號 * ( , ) 描述: 返回錯誤描述號的詳細描述信息 參數(shù): : ()的返回值, : 設為 返回值: 失敗返回,成功返回詳細描述信息 采用語言編寫的客戶端程序采用語言編寫的客戶端程序 如果是采用語言編寫的客戶端程序,可直接采用的函數(shù),這些函數(shù)在中定義.采用語言編寫的客戶端的例子在此不列舉,可參考等例子.采用語言編寫客戶端的編譯是用命令進行的,它的使用格式如下: 參數(shù)說明: : 編譯用寫的客戶端 : 輸出詳細的編譯信息 : 編譯成

13、,如果不帶該參數(shù),那么將編譯成 . : 編譯生成的可執(zhí)行文件名 : 要編譯的文件名 : 指定要編譯生成該可執(zhí)行文件名要連接的其他庫文件,如果有多個庫文件要連接,它們之間用空格隔開. : 指定該要連接的 調用或編譯器來進行編譯工作.所以客戶端所在的機器要有編譯器才能編譯客戶端的程序. 如果是客戶端,可安裝,并在環(huán)境下編譯客戶端的程序. 如果在安裝時沒有把自動設置環(huán)境變量的選項選上,中設置環(huán)境變量的文件在安裝目錄下的中,可手工執(zhí)行它或在設置環(huán)境變量的文件中用調用它,如: : : : 如果是客戶端,可安裝等或編譯器.并在環(huán)境變量中設置所用的編譯器路徑. 采用編寫客戶端程序采用編寫客戶端程序 采用編寫

14、客戶端程序與采用語言編寫客戶端的方式一樣,但要對要進行一些設置才能進行編譯,說明如下: 1. 在下的 中加上,如圖所示: 2. 在下的 中選 ,然后加上的目錄,如圖所示: . 在下的 中選 ,然后加上的目錄,如圖所示: 采用編寫客戶端程序采用編寫客戶端程序 . . 函數(shù)的聲明函數(shù)的聲明 對,等客戶端,提供一個編程接口,該文件名為,首先要在這些語言中聲明所要用到的函數(shù)。因為中沒有指針,我們把它們聲明為型。如果是雙重指針,可聲明為 . 下面聲明采用編寫段程序常用到的函數(shù) ( ) ( ) ( , , ) ( , ) ( , ) ( , , , , , ) ( ) ( ) ( ) ( ) ( , )

15、( , , , ) ( , , , ) ( , , , , ) () ( ) ( , , , , ) ( , , , , ) ( , , , , ) ( , ) ( , ) ( , , ) ( ) ( ) ( ) ( , ) ( ) ( , , , , ) ( , , , , ) . (). ()緩沖區(qū)的定義緩沖區(qū)的定義 在中緩沖區(qū)中字段的在*文件中定義,在中可以把它們定義為常量 . .編程方式的改變編程方式的改變 在兩層的結構中,客戶端直接訪問數(shù)據(jù)庫,當采用中間件后,形成三層結構。這時,客戶端不直接訪問數(shù)據(jù)庫,而是改為調用中間件服務端上的服務,由服務端訪問數(shù)據(jù)庫,并把結果返回給客戶端。所以這

16、時候客戶端上不用安裝數(shù)據(jù)庫的客戶端,中的數(shù)據(jù)窗口的數(shù)據(jù)源也只能采用外部數(shù)據(jù)源。因為不能直接與數(shù)據(jù)庫建立連接. . .對存儲過程的處理對存儲過程的處理 推薦的做法是把存儲過程轉換為 的,這樣做工作量比較大,但是完全的層結構,另一種方式是存儲過程不變,用一個 的去調用該存儲過程,把結果返回給客戶端. . .例子例子 下面我們舉兩個例子來說明在中編寫客戶端程序的方法. 為了方便在例子中調用,我們重新定義對緩沖區(qū)進行操作的函數(shù)如下: ( )( ) *作用:寫一個浮點型數(shù)據(jù)到緩沖區(qū)的指定位置中 輸入?yún)?shù): : 緩沖區(qū) : 號 : 位置 : 要寫入的浮點型數(shù)據(jù) 輸入?yún)?shù):無 返回值: 成功,失敗 * (); () () ( ( () )出錯: () ( )( ) *作用:寫一個整型數(shù)據(jù)到緩沖區(qū)的指定位置中 輸入?yún)?shù): : 緩沖區(qū) : 號 : 位置 : 要寫入的整型數(shù)據(jù) 輸入?yún)?shù):無 返回值: 成功,失敗 * (); () () ( ( () )出錯: () ( )( ) *作用:寫一個字符型數(shù)據(jù)到緩沖區(qū)的指定位置中 輸入?yún)?shù): : 緩沖區(qū) : 號 : 位置 : 要寫入的字符

溫馨提示

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

評論

0/150

提交評論