服務器程序通常封裝業務邏輯,沒有界面處理,供客戶端調用。比如,我們創建一個加法計算的服務器。操作步驟如下:
1、爲Application對象的ConnectionBegin編寫腳本。當客戶端程序嘗試聯結服務器時觸發該事件。所以,該事件應該對用戶合法性進行檢查,如果是合法用戶則返回聯結成功標誌。腳本如下:
if userid = 'guobaoli' then return ConnectPrivilege!
2、在Application事件中打開服務器主窗口。
Open(w_main)
3、在w_main窗口的Open事件中設置TransPort的必要參數。所有和客戶端的處理都是通過該對象進行的。所以,首先需要定義一個TransPort類型的全局變量g_TransPort。然後編寫如下腳本:
integer li_rtn
g_transport = Create TransPort
g_transport.Driver = 'WinSock' //驅動程序
g_transport.Application = '5555' //端口號
li_rtn = g_TransPort.Listen() //監聽客戶聯結
if li_rtn <> 0 then halt close
4、這是最重要的一個步驟,開發業務邏輯,必須是非可視的用戶對象。我們只只編寫一個函數of_add即可。
/*--------------------------------------------------------------------
* 函數定義:integer of_add(integer ai_1,integer ai_2)
* 函數作用:求和。
* 編寫日期:2004.7.11
* 編 寫 人:達通興電腦科技 郭寶利
*-------------------------------------------------------------------*/
return ai_1 + ai_2
5、業務邏輯開發完成後,爲了保證客戶端能夠調用到這些用戶對象中的函數,還需要生成客戶端的代理。客戶端通過這些代理,就可以知道哪些函數在服務器端了。所以,我們這個步驟需要創建客戶端代理。操作步驟如下:
1)關閉PB中所有已經打開的畫板;
2)選擇窗口菜單file->new->project->proxy library
3)選擇工具條中的select objects,選擇我們服務器端程序所在的pbl,選中用戶對象;
4)選擇工具條中的Properties,選擇output library爲客戶端的pbl(如果還沒有創建,可以先創建客戶端pbl);
5)運行,即可生成客戶端代理。
至此,服務器端程序的處理就結束了。下面編寫客戶端的程序。首先在Application對象的Open事件中打開主窗口:
Open(w_main)
然後,我們設計主窗口。放置一個命令按鈕,text屬性改爲'add'即可。在w_main窗口的Open事件中編寫如下腳本:
integer li_rc
g_connection = create connection
g_connection.Driver = "WinSock"
g_connection.Location = '192.168.21.88' //取值
g_connection.Application = '5555'
g_connection.UserId = 'guobaoli'
li_rc = g_connection.ConnectToServer()
if li_rc <> 0 then halt close;
//首先聲明全局變量:nvo_add gvo_add
if g_connection.CreateInstance(gvo_add,'nvo_add')
if li_rc <> 0 then
MessageBox ("客戶端", "遠程實例對象創建失敗!" )
halt close
end if
至此,必要的準備工作都結束了,接下來我們就要驗證我們的工作成果了:編寫一個調用服務器端函數的小程序。在命令按鈕‘add’的Clicked上編寫如下腳本:
MessageBox('',string(gvo_add.of_add(32,5)))