本站小編為你精心準備了PB的C/S模式數據通信軟件的開發參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
1客戶端服務器端網絡通信實現
目標主機上程序代碼如下://定義全局變量winsockgs_wssocketdgramgs_udpintgi_port//定義目標主機端口號//在open事件中創建winsock和數據報式套接口對象gs_ws=createwinsockgs_udp=createsocketdgram//通知套接字端口有請求事件發生gs_udp.wsaasyncselect(handle(parent),1025,gs_ws.fd_read+gs_ws.fd_write)//欲接收讀、寫準備好通知//綁定端口gs_udp.bind(0,gi_port)//綁定目標主機端口號在調用wsaasyncselect后,窗口需處理消息,此處需為窗口定義一個新的自定義事件,事件的ID為pbm_custom02。該事件有兩個變量,wparam與lparam,變量類型分別為un-signedlong與long。//接收源主機發來的消息并發送消息至源主機,uPeerClient,i//ClientPort分別為源主機的IP地址與端口號gs_udp.recvfrom(ls_data,1024,0,uPeerClient,iClientPort)//接//收消息,消息存于ls_data變量中接收到消息后,程序可進行//其他操作處理,向源主機發送消息gs_udp.sendto(ls_data_return,len(string(ls_data_return)),0,u-PeerClient,iClientPort)//使用完成后,在close事件中關閉socket,釋放資源gs_udp.closesocket()destroygs_udpdestroygs_ws源主機上程序代碼如下://定義全局變量winsockgs_wssocketdgramgs_udpintgs_ip,gi_port//定義目標主機的IP號與端口號//在open事件中創建winsock和數據報式套接口對象gs_ws=createwinsockgs_udp=createsocketdgram//通知套接字端口有請求事件發生gs_udp.wsaasyncselect(handle(parent),1025,gs_ws.fd_read+gs_ws.fd_write)//欲接收讀、寫準備好通知//在發送按鈕下寫發送程序代碼gs_udp.sendto(ls_data,len(string(ls_data)),0,gs_ws.Inet_addr(gs_ip),gi_port)//ls_data為發送的消息,其中Inet_addr將//IPv4格式轉換為無符號的長整型函數,實現IP地址的轉換在調用wsaasyncselect后,窗口需處理消息,此處需為窗口定義一個新的自定義事件,事件的ID為pbm_custom02。在該事件中,有接收目標主機消息程序代碼。gs_udp.recvfrom(ls_data_return,1024,0,uPeerClient,iClient-Port)//接收目標主機發送的消息//使用完成后,在close事件中關閉socket,釋放資源gs_udp.closesocket()destroygs_udpdestroygs_ws
2主備服務器的數據庫同步備份
在軟件設計時,需要在任意時刻對數據庫進行備份和還原,其備份文件保存在管理員機端的相應文件夾下。由于這種備份功能是由管理員的意愿進行備份,故每次備份時都將覆蓋上一次的備份文件,以保留管理員所希望的最新的備份文件。但是人工備份方式也有一些缺陷,它具有不可連續性操作,備份時間點不確定等缺點,而且當主服務器上的數據庫遭到損壞、系統故障或服務器硬件故障等原因主服務器無法啟動時,也顯得束手無策,為此設計了一種基于PB的主備服務器的同時定時備份軟件。功能示意圖如圖2所示。該軟件工作時,將主服務器中的數據庫階段性的以備份文件(*.dat)的形式保存起來,當出現數據無法使用或數據保存錯誤的情況時,可通過告知管理員,在主服務器上手動進行還原,將數據還原到自己所需要的時間點;或是通過服務器上的管理員端軟件對數據庫進行還原。當主服務器關機時,管理員通過手動開啟備用服務器,仍可向用戶提供最后一次還原的時間點的數據。
2.1定時開機與關機功能(1)保證硬件連接:用網線將筆記本網口與備用服務器的管理口(SystemMGMT)相連。(2)設定筆記本與備用服務器的IP地址和子網掩碼,保證兩個地址在同一個網段。(3)在筆記本上打開IE瀏覽器(或其他瀏覽器),在網址中輸入:192.168.70.125(默認IMM的IP地址)(4)在彈出的頁面中,分別輸入用戶名:USERID,密碼:PASSW0RD(此處0為數字零)。(5)登錄后,點擊continue,選擇tasks下的Power/Restart,再選擇ScheduleDaily/WeeklyPowerandRestartActions,在這里設定時間并Save(此處選擇每天定時開機、關機)。注意:必須保證IMM時間與服務器時間相同,可在IMMControl下的SystemSettings中設置。
2.2主服務器軟件主服務器上開機時自動運行一個小程序,完成定時備份的功能。程序啟動后,一直監測備用服務器的共享文件夾定時備份是否存在。若不存在,則將timebackup.ini文件中的backup置0;若存在則判斷timebackup.ini文件中的backup是否為0,若為0則為是第一次檢測到,隨后將backup置1,并備份主服務器中的test數據庫,將此文件拷貝至主服務器定時備份文件存放地址下(創建以備份時間命名的文件夾),以完成主服務器的定時備份;同時將此文件拷貝至備用服務器的共享文件夾下,并通過SQL語句將該備份還原至備用服務器,以完成備用服務器與主服務器的數據庫數據同步。
2.3備用服務器軟件同理,在備用服務器上也同時運行一個小程序,其功能是檢測備用服務器自身的共享文件夾中是否存在數據庫備份文件(.dat),此備份文件為主服務器數據庫最近一個時間點的備份文件。若存在則將該備份文件拷貝至備用服務器文件夾下(創建以備份時間命名的文件夾)。這樣,只要管理員打開備用服務器,鍵入密碼進入桌面,即可將主服務器數據庫最新的備份文件拷貝一份至備用服務器存儲起來,對數據庫的數據又加了一層保護。由于服務器程序是以備用服務器的共享文件夾是否存在為基礎的,與時間無關,因此這兩套程序不受定時開機、關機的時間的約束,即可以隨意更改定時開機、關機的時間,以滿足工作的需要。又因與時間無關,當管理員在任意時間點打開備用服務器時,這兩套程序仍然正常運行,即也會設立一個新的時間點進行備份(此操作不影響當天的定時備份環節),這樣也間接地完成了不定時備份功能。
3結語
在當前數據信息高速發展的環境下,局域網內的數據傳輸已經成為用戶進行日常業務必不可少的保障。PowerBuilder與SQLServer的通信技術經過不斷發展,技術上已非常成熟,為局域網數據通信軟件的實現奠定了技術基礎。
作者:朱慧奇格奇溫渤嬰單位:中國農業大學信息與電氣工程學院清華大學土木水利學院