版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第七章:的客戶(hù)端編程第七章:的客戶(hù)端編程 的客戶(hù)端簡(jiǎn)介:的客戶(hù)端簡(jiǎn)介: 有兩種客戶(hù)端: 本地客戶(hù)端和遠(yuǎn)程客戶(hù)端。 (本地客戶(hù)端): 是指與服務(wù)器在同一臺(tái)機(jī)器上,不用通過(guò)網(wǎng)絡(luò) 就可以訪問(wèn)到服務(wù)器的客戶(hù)端 。 (本地客戶(hù)端):是指要通過(guò)網(wǎng)絡(luò)才可以訪問(wèn)到服務(wù)器的客戶(hù)端。 下圖為應(yīng)用系統(tǒng)的客戶(hù)端訪問(wèn)服務(wù)器上的服務(wù)的過(guò)程圖。 說(shuō)明: ( ) 用于指產(chǎn)品的客戶(hù)端部分 ( ) 系統(tǒng)自帶的一個(gè),它偵聽(tīng)一個(gè)指定的端口,最初與該 建立連接 ( ) 系統(tǒng)自帶的一個(gè),由它處理與 之間的通訊。 (公告板) 把系統(tǒng)的配置保存在一個(gè)共享內(nèi)存中,該共享內(nèi)存稱(chēng)為公告板() 的管理進(jìn)程,主要對(duì)公告板等進(jìn)行管理 與與 建立連接的過(guò)
2、程為:建立連接的過(guò)程為: 1 調(diào)用()或() 2 采用在中指定的地址與服務(wù)端的建立連接 3 為該指定一個(gè),并把該的偵聽(tīng)端口返回給 4 采用返回的端口與指定的建立連接,并與斷開(kāi)連接,這之后與 之間的通訊通過(guò)進(jìn)行處理,與無(wú)關(guān)。 5 ()或()調(diào)用返回。 本地客戶(hù)端與遠(yuǎn)程客戶(hù)端的主要區(qū)別本地客戶(hù)端與遠(yuǎn)程客戶(hù)端的主要區(qū)別 1. 本地客戶(hù)端只能用語(yǔ)言或語(yǔ)言編寫(xiě),遠(yuǎn)程客戶(hù)端可以用幾乎所有的編程語(yǔ)言編 寫(xiě)。 2. 在遠(yuǎn)程客戶(hù)端所在的機(jī)器上要安裝的客戶(hù)端軟件,并且在設(shè)置相應(yīng)的環(huán)境變量; 在本地客戶(hù)端上不用 3. 用編譯遠(yuǎn)程客戶(hù)端程序時(shí)要加 ,編譯本地客戶(hù)端則不用 與遠(yuǎn)程客戶(hù)端有關(guān)的配置:與遠(yuǎn)程客戶(hù)端有關(guān)的配置
3、: 1 在中要配置,即最多可以有多少個(gè)遠(yuǎn)程客戶(hù)端同時(shí)連接 到該服務(wù)器上。 2 在中要配置: 中可帶的參數(shù)為: 參數(shù)說(shuō)明: : 的偵聽(tīng)端口,遠(yuǎn)程客戶(hù)端通過(guò)該端口與服務(wù)器建立連接 : 最少啟動(dòng)多少個(gè)進(jìn)程 : 最多啟動(dòng)多少個(gè)進(jìn)程,默認(rèn)值為 :每個(gè)進(jìn)程可以同時(shí)與多少個(gè)遠(yuǎn)程客戶(hù)端建立連接 如果在遠(yuǎn)程客戶(hù)端與服務(wù)器之間傳送的數(shù)據(jù)包大小(單位為字節(jié))超過(guò)指定的參 數(shù),就自動(dòng)進(jìn)行數(shù)據(jù)壓縮, : 指定一個(gè)遠(yuǎn)程客戶(hù)端的空閑時(shí)間,如果該遠(yuǎn)程客戶(hù)端在這么長(zhǎng)的時(shí)間內(nèi)沒(méi)有做任何調(diào)用,將斷開(kāi)與該遠(yuǎn)程客戶(hù)端的連接。單位為分鐘,如果沒(méi)有指點(diǎn)該參數(shù),那么永遠(yuǎn)不會(huì)自動(dòng)斷開(kāi)遠(yuǎn)程客戶(hù)端的連接 : 指定遠(yuǎn)程客戶(hù)端與建立連接的時(shí)間,如果在
4、指定的時(shí)間內(nèi)還沒(méi)有建立連接,那么連接將失敗。如果沒(méi)有采用安全認(rèn)證方式默認(rèn)為*秒,。如果采用安全認(rèn)證方式默認(rèn)為*秒, :指定可以使用的端口范圍: 如果遠(yuǎn)程客戶(hù)端要跨越防火墻才能訪問(wèn)該應(yīng)用系統(tǒng),在中要指定該參數(shù),指定可以使用的端口范圍,并讓防火墻允許訪問(wèn)這些端口。如果不指定,會(huì)根據(jù)系統(tǒng)端口的使用情況進(jìn)行分配,而分配的端口防火墻不允許通過(guò),造成無(wú)法調(diào)用 。如下面的設(shè)置指定可用的端口范圍為 。 在遠(yuǎn)程客戶(hù)端的機(jī)器上要設(shè)置的環(huán)境變量在遠(yuǎn)程客戶(hù)端的機(jī)器上要設(shè)置的環(huán)境變量 (必需):客戶(hù)端在該機(jī)器上的安裝目錄 (必需):遠(yuǎn)程客戶(hù)端通過(guò)該地址與服務(wù)器建立連接,它的值為參數(shù)的值, 如在上面的配置中為: (可選)
5、: 該客戶(hù)端的類(lèi)型,如果與服務(wù)器的類(lèi)型一樣,那么在它們之間進(jìn)行數(shù)據(jù) 傳送時(shí)不用進(jìn)行編碼解碼工作。 其他不常用的環(huán)境變量可參考的聯(lián)機(jī)文檔。 客戶(hù)端的編程模式:客戶(hù)端的編程模式: 在層結(jié)構(gòu)中,是屬與表示層,表示層主要處理與用戶(hù)交互,它的功能可概括為: 、提供應(yīng)用的用戶(hù)交互接口,即主要通過(guò)圖形化的用戶(hù)界面,取的用戶(hù)的輸入數(shù)據(jù) 、與 應(yīng)用服務(wù)器建立連接 、調(diào)用應(yīng)用服務(wù)器上的服務(wù)(),把客戶(hù)端的輸入?yún)?shù)放入輸出緩沖區(qū)。 、應(yīng)用服務(wù)器調(diào)用相應(yīng)的處理客戶(hù)端的請(qǐng)求,把處理結(jié)果通過(guò)客戶(hù)端的輸 入緩沖區(qū)返回給客戶(hù)端。 客戶(hù)端與服務(wù)端之間的通訊方式有以下幾種:客戶(hù)端與服務(wù)端之間的通訊方式有以下幾種: 、同步調(diào)用:
6、、異步調(diào)用 、會(huì)話(huà)方式: 、可靠消息隊(duì)列 、廣播方式 、發(fā)布訂閱 在下一章我們?cè)倬唧w介紹 的介紹的介紹 客戶(hù)端通過(guò)調(diào)用提供的編程()來(lái)編寫(xiě)程序,下面介紹一些客戶(hù)端主要的 與連接的建立與斷開(kāi)有關(guān)的與連接的建立與斷開(kāi)有關(guān)的 為了與 建立連接 要調(diào)用()檢查該 所采用的安全方式,并根據(jù)得到的值做相應(yīng)的處理,然后調(diào)用()建立與的連接,在 的結(jié)果返回 之后,調(diào)用()斷開(kāi)與 的連接. () 描述: 檢查該 所采用的安全方式 參數(shù):無(wú) 返回值: :不需要認(rèn)證 :需要口令認(rèn)證 :需要口令認(rèn)證,并且還需要應(yīng)用級(jí)的認(rèn)證或授權(quán). :調(diào)用失敗, 錯(cuò)誤號(hào)保存在全局變量中。 ( *) 描述: 與 建立連接 參數(shù) 返回值:
7、 失敗返回, 錯(cuò)誤號(hào)保存在全局變量中。 結(jié)構(gòu)體在中的定義如下結(jié)構(gòu)體在中的定義如下 ; * * ; * * ; * * ; * * ; * * ; * * ; * * ; ; 說(shuō)明用于安全認(rèn)證中 :用于定義以何種方式通知該客戶(hù)端一個(gè) 的到來(lái).它的值可以為: () 描述: 斷開(kāi)與 建立連接 參數(shù):無(wú) 返回值: 失敗返回, 錯(cuò)誤號(hào)保存在全局變量中。 與請(qǐng)求與請(qǐng)求 有關(guān)的有關(guān)的 ( *, *, , *, *, ) 描述:客戶(hù)端同步調(diào)用服務(wù)端的名為的, 參數(shù): *:的名稱(chēng) *: 輸入緩沖區(qū)的地址,客戶(hù)端傳給服務(wù)端的參數(shù)放在該緩沖區(qū)內(nèi) : 輸入緩沖區(qū)的長(zhǎng)度 * 輸出緩沖區(qū)的地址,服務(wù)端傳給客戶(hù)端的結(jié)果放在
8、該緩沖區(qū)內(nèi) *:輸出緩沖區(qū)的長(zhǎng)度 : 調(diào)用標(biāo)志,由以下幾個(gè): 如果調(diào)用的客戶(hù)端當(dāng)前在方式下,那么不參與當(dāng)前的。 如果服務(wù)端返回的緩沖區(qū)類(lèi)型與客戶(hù)端定義的緩沖區(qū)()類(lèi)型不一致,默認(rèn)情況下,會(huì)轉(zhuǎn)換成與服務(wù)端返回的緩沖區(qū)類(lèi)型一致的類(lèi)型,如果設(shè)置了該,那么當(dāng)出現(xiàn)這種情況時(shí),不進(jìn)行緩沖區(qū)類(lèi)型轉(zhuǎn)換,并且會(huì)保錯(cuò)。 默認(rèn)情況下,如果客戶(hù)端有阻塞條件存在(如的中的緩沖區(qū)滿(mǎn),磁盤(pán)忙等),那么客戶(hù)端會(huì)阻塞在那里,直到阻塞消除或超時(shí)出錯(cuò)。如果設(shè)置了,當(dāng)客戶(hù)端有阻塞條件存在時(shí)()會(huì)立刻返回并報(bào)錯(cuò). 注意只對(duì)發(fā)送請(qǐng)求時(shí)起作用,如果在接收服務(wù)端返回的結(jié)果時(shí)有阻塞條件存在,客戶(hù)端會(huì)在那里等待,直到阻塞消除或超時(shí)出錯(cuò) 如果客戶(hù)
9、端有阻塞條件存在,客戶(hù)端會(huì)一直阻塞在那里,即使到了超時(shí)時(shí)間也不返回,但如果該客戶(hù)端是在模式下,當(dāng)?shù)搅?事務(wù)的超時(shí)時(shí)間,還是會(huì)報(bào)超時(shí)錯(cuò)誤并返回。 如果在進(jìn)行系統(tǒng)調(diào)用時(shí),被信號(hào)中斷,該系統(tǒng)調(diào)用會(huì)重新進(jìn)行。 調(diào)用成功返回,失敗返回, 錯(cuò)誤號(hào)保存在全局變量中。 ( *, *, , ) 描述: 客戶(hù)端異步調(diào)用服務(wù)端的名為的,不等服務(wù)端返回結(jié)果,程序可繼續(xù)往 下走,在某個(gè)地方調(diào)用()取的服務(wù)端的返回 參數(shù): *, *, 參數(shù)的含義與()中的一樣 可設(shè)置為:, , , . , , 的含義與與()中的一樣 :調(diào)用()的客戶(hù)端不想接收端的應(yīng)答。如果設(shè)置了 :服務(wù)端不會(huì)給該客戶(hù)端發(fā)送應(yīng)答。 返回值: 失敗返回,成
10、功返回一個(gè),可作為的參數(shù),用于取應(yīng)答 ( *, *, *, ) 描述:取出服務(wù)端對(duì)()的應(yīng)答。 參數(shù): ()返回的 *返回緩沖區(qū)的地址,服務(wù)端傳給客戶(hù)端的結(jié)果放在該緩沖區(qū)內(nèi) *:返回緩沖區(qū)的長(zhǎng)度 :可以是:, ,(不管的值,從服務(wù) 器的應(yīng)答隊(duì)列中取第一個(gè)可用的消息), 返回值: 失敗返回,錯(cuò)誤號(hào)保存在全局變量中。 ( ) 描述: 如果當(dāng)前的程序不處于事務(wù)模式中,取消對(duì)()的應(yīng)答, 如果處于事務(wù)模式 中,則不能取消對(duì)()的應(yīng)答,該調(diào)用會(huì)失敗. 參數(shù): ()返回的 返回值: 失敗返回,錯(cuò)誤號(hào)保存在全局變量中。 () 描述:返回最近發(fā)送()()或接收()的一個(gè)消息的優(yōu)先級(jí) 參數(shù):無(wú) 返回值: 消息的
11、優(yōu)先級(jí),值越高, 優(yōu)先級(jí)越高 失敗返回, 錯(cuò)誤號(hào)保存在全局變量中。 ; * * ; * * ; (; ; ) * * (, , , ); * * (); * () * (*) , , (), ); (; ; ) (, , , ); ( , ) 描述: 設(shè)置下一個(gè)要發(fā)送的消息的優(yōu)先級(jí) 參數(shù): 為相對(duì)值, 設(shè)置下一個(gè)要發(fā)送的消息的優(yōu)先級(jí)為現(xiàn)在的優(yōu)先級(jí)加上 : 為絕對(duì)值, 設(shè)置下一個(gè)要發(fā)送的消息的優(yōu)先級(jí)為 返回值: 失敗返回,錯(cuò)誤號(hào)保存在全局變量中。 與請(qǐng)求錯(cuò)誤處理有關(guān)的與請(qǐng)求錯(cuò)誤處理有關(guān)的 *( ) 描述:返回錯(cuò)誤號(hào)為的錯(cuò)誤描述 參數(shù): :在中定義的全局變量,用于標(biāo)識(shí)錯(cuò)誤號(hào),類(lèi)似于中的 返回值:
12、失敗返回,成功返回錯(cuò)誤號(hào)為的錯(cuò)誤描述. ( ) 描述: 返回當(dāng)前進(jìn)程或線程最近調(diào)用的出錯(cuò)的更詳細(xì)的描述 參數(shù):設(shè)為 返回值: 如果沒(méi)有錯(cuò)誤返回,有錯(cuò)誤返回錯(cuò)誤描述號(hào) * ( , ) 描述: 返回錯(cuò)誤描述號(hào)的詳細(xì)描述信息 參數(shù): : ()的返回值, : 設(shè)為 返回值: 失敗返回,成功返回詳細(xì)描述信息 采用語(yǔ)言編寫(xiě)的客戶(hù)端程序采用語(yǔ)言編寫(xiě)的客戶(hù)端程序 如果是采用語(yǔ)言編寫(xiě)的客戶(hù)端程序,可直接采用的函數(shù),這些函數(shù)在中定義.采用語(yǔ)言編寫(xiě)的客戶(hù)端的例子在此不列舉,可參考等例子.采用語(yǔ)言編寫(xiě)客戶(hù)端的編譯是用命令進(jìn)行的,它的使用格式如下: 參數(shù)說(shuō)明: : 編譯用寫(xiě)的客戶(hù)端 : 輸出詳細(xì)的編譯信息 : 編譯成
13、,如果不帶該參數(shù),那么將編譯成 . : 編譯生成的可執(zhí)行文件名 : 要編譯的文件名 : 指定要編譯生成該可執(zhí)行文件名要連接的其他庫(kù)文件,如果有多個(gè)庫(kù)文件要連接,它們之間用空格隔開(kāi). : 指定該要連接的 調(diào)用或編譯器來(lái)進(jìn)行編譯工作.所以客戶(hù)端所在的機(jī)器要有編譯器才能編譯客戶(hù)端的程序. 如果是客戶(hù)端,可安裝,并在環(huán)境下編譯客戶(hù)端的程序. 如果在安裝時(shí)沒(méi)有把自動(dòng)設(shè)置環(huán)境變量的選項(xiàng)選上,中設(shè)置環(huán)境變量的文件在安裝目錄下的中,可手工執(zhí)行它或在設(shè)置環(huán)境變量的文件中用調(diào)用它,如: : : : 如果是客戶(hù)端,可安裝等或編譯器.并在環(huán)境變量中設(shè)置所用的編譯器路徑. 采用編寫(xiě)客戶(hù)端程序采用編寫(xiě)客戶(hù)端程序 采用編寫(xiě)
14、客戶(hù)端程序與采用語(yǔ)言編寫(xiě)客戶(hù)端的方式一樣,但要對(duì)要進(jìn)行一些設(shè)置才能進(jìn)行編譯,說(shuō)明如下: 1. 在下的 中加上,如圖所示: 2. 在下的 中選 ,然后加上的目錄,如圖所示: . 在下的 中選 ,然后加上的目錄,如圖所示: 采用編寫(xiě)客戶(hù)端程序采用編寫(xiě)客戶(hù)端程序 . . 函數(shù)的聲明函數(shù)的聲明 對(duì),等客戶(hù)端,提供一個(gè)編程接口,該文件名為,首先要在這些語(yǔ)言中聲明所要用到的函數(shù)。因?yàn)橹袥](méi)有指針,我們把它們聲明為型。如果是雙重指針,可聲明為 . 下面聲明采用編寫(xiě)段程序常用到的函數(shù) ( ) ( ) ( , , ) ( , ) ( , ) ( , , , , , ) ( ) ( ) ( ) ( ) ( , )
15、( , , , ) ( , , , ) ( , , , , ) () ( ) ( , , , , ) ( , , , , ) ( , , , , ) ( , ) ( , ) ( , , ) ( ) ( ) ( ) ( , ) ( ) ( , , , , ) ( , , , , ) . (). ()緩沖區(qū)的定義緩沖區(qū)的定義 在中緩沖區(qū)中字段的在*文件中定義,在中可以把它們定義為常量 . .編程方式的改變編程方式的改變 在兩層的結(jié)構(gòu)中,客戶(hù)端直接訪問(wèn)數(shù)據(jù)庫(kù),當(dāng)采用中間件后,形成三層結(jié)構(gòu)。這時(shí),客戶(hù)端不直接訪問(wèn)數(shù)據(jù)庫(kù),而是改為調(diào)用中間件服務(wù)端上的服務(wù),由服務(wù)端訪問(wèn)數(shù)據(jù)庫(kù),并把結(jié)果返回給客戶(hù)端。所以這
16、時(shí)候客戶(hù)端上不用安裝數(shù)據(jù)庫(kù)的客戶(hù)端,中的數(shù)據(jù)窗口的數(shù)據(jù)源也只能采用外部數(shù)據(jù)源。因?yàn)椴荒苤苯优c數(shù)據(jù)庫(kù)建立連接. . .對(duì)存儲(chǔ)過(guò)程的處理對(duì)存儲(chǔ)過(guò)程的處理 推薦的做法是把存儲(chǔ)過(guò)程轉(zhuǎn)換為 的,這樣做工作量比較大,但是完全的層結(jié)構(gòu),另一種方式是存儲(chǔ)過(guò)程不變,用一個(gè) 的去調(diào)用該存儲(chǔ)過(guò)程,把結(jié)果返回給客戶(hù)端. . .例子例子 下面我們舉兩個(gè)例子來(lái)說(shuō)明在中編寫(xiě)客戶(hù)端程序的方法. 為了方便在例子中調(diào)用,我們重新定義對(duì)緩沖區(qū)進(jìn)行操作的函數(shù)如下: ( )( ) *作用:寫(xiě)一個(gè)浮點(diǎn)型數(shù)據(jù)到緩沖區(qū)的指定位置中 輸入?yún)?shù): : 緩沖區(qū) : 號(hào) : 位置 : 要寫(xiě)入的浮點(diǎn)型數(shù)據(jù) 輸入?yún)?shù):無(wú) 返回值: 成功,失敗 * (); () () ( ( () )出錯(cuò): () ( )( ) *作用:寫(xiě)一個(gè)整型數(shù)據(jù)到緩沖區(qū)的指定位置中 輸入?yún)?shù): : 緩沖區(qū) : 號(hào) : 位置 : 要寫(xiě)入的整型數(shù)據(jù) 輸入?yún)?shù):無(wú) 返回值: 成功,失敗 * (); () () ( ( () )出錯(cuò): () ( )( ) *作用:寫(xiě)一個(gè)字符型數(shù)據(jù)到緩沖區(qū)的指定位置中 輸入?yún)?shù): : 緩沖區(qū) : 號(hào) : 位置 : 要寫(xiě)入的字符
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年古玩字畫(huà)擔(dān)保協(xié)議
- 2025年寬帶網(wǎng)絡(luò)使用合同
- 2025年融資居間服務(wù)合同的比較研究
- 2025版煤炭行業(yè)安全生產(chǎn)技術(shù)改造項(xiàng)目合同4篇
- 2025版外匯保函交易風(fēng)險(xiǎn)管理與控制合同3篇
- 二零二五年度通訊車(chē)輛質(zhì)押擔(dān)保合同
- 二零二五年度健身器材租賃合同最長(zhǎng)期限約定
- 2025年度集體土地入股聯(lián)營(yíng)智慧農(nóng)業(yè)項(xiàng)目協(xié)議
- 2025年度林業(yè)資源運(yùn)輸公司大車(chē)司機(jī)招聘合同
- 2025年度藥店員工工作滿(mǎn)意度調(diào)查與改進(jìn)合同
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設(shè)計(jì)與授權(quán)使用3篇
- 心肺復(fù)蘇課件2024
- 《城鎮(zhèn)燃?xì)忸I(lǐng)域重大隱患判定指導(dǎo)手冊(cè)》專(zhuān)題培訓(xùn)
- 湖南財(cái)政經(jīng)濟(jì)學(xué)院專(zhuān)升本管理學(xué)真題
- 全國(guó)身份證前六位、區(qū)號(hào)、郵編-編碼大全
- 2024-2025學(xué)年福建省廈門(mén)市第一中學(xué)高一(上)適應(yīng)性訓(xùn)練物理試卷(10月)(含答案)
- 《零售學(xué)第二版教學(xué)》課件
- 廣東省珠海市香洲區(qū)2023-2024學(xué)年四年級(jí)下學(xué)期期末數(shù)學(xué)試卷
- 房地產(chǎn)行業(yè)職業(yè)生涯規(guī)劃
- 江蘇省建筑與裝飾工程計(jì)價(jià)定額(2014)電子表格版
- MOOC 數(shù)字電路與系統(tǒng)-大連理工大學(xué) 中國(guó)大學(xué)慕課答案
評(píng)論
0/150
提交評(píng)論