999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Socket的水文數(shù)據(jù)庫管理平臺的設(shè)計與實現(xiàn)

2020-08-04 21:59:42郭浩胡曉峰付航帥
河南科技 2020年17期
關(guān)鍵詞:數(shù)據(jù)庫管理

郭浩 胡曉峰 付航帥

摘 要:水文數(shù)據(jù)是水文研究和分析的重要依據(jù),水文數(shù)據(jù)的科學管理是實現(xiàn)分級可視化、圖文查詢和統(tǒng)計分析的關(guān)鍵?;赟ocket的水文數(shù)據(jù)庫管理平臺采用Microsoft Visual Studio 2015作為開發(fā)平臺,利用MFC構(gòu)建水文數(shù)據(jù)庫管理平臺框架,利用SQL數(shù)據(jù)庫存儲數(shù)據(jù)。該平臺為進一步加強水文信息管理提供關(guān)鍵技術(shù)支持。

關(guān)鍵詞:水文數(shù)據(jù);Socket;C/S

中圖分類號:TP311.13文獻標識碼:A文章編號:1003-5168(2020)17-0013-03

Design and Implementation of Hydrological Database Management Platform Based on Socket

GUO Hao HU Xiaofeng FU Hangshuai

(Henan Water & Power Engineering Consulting Co., Ltd.,Zhengzhou Henan 450000)

Abstract: The hydrological data is an important basis for hydrological research and analysis, scientific management of hydrological data is the key to achieving hierarchical visualization, graphic query and statistical analysis. The Socket-based hydrological database management platform uses Microsoft Visual Studio 2015 as the development platform, uses MFC to build a hydrological database management platform framework, and uses SQL databases to store data. The platform provides key technical support for further strengthening hydrological information management.

Keywords: hydrological data;Socket;C/S

水文遙測站是水文信息采集的重要設(shè)施,隨著我國水利信息化的不斷完善和通信技術(shù)的不斷發(fā)展,全國76%以上的水文遙測站實現(xiàn)了自動測報,所采集的水文要素值是流域管理的重要數(shù)據(jù)來源與主要參考依據(jù)。但目前已建的水文遙測系統(tǒng)缺乏對水文信息的統(tǒng)一發(fā)布與管理,嚴重影響水文信息的共享與綜合管理[1-3]?;诖?,本文提出建立基于Socket的水文數(shù)據(jù)庫管理平臺,依據(jù)基礎(chǔ)水文數(shù)據(jù)庫表結(jié)構(gòu)及標識符標準,實現(xiàn)水文信息的科學管理、快速查詢與統(tǒng)計的直觀展示。系統(tǒng)采用TCP標準通信協(xié)議,完成服務(wù)端和客戶端的信息傳輸,同時服務(wù)端和數(shù)據(jù)庫分離,通過ADO數(shù)據(jù)庫連接,實現(xiàn)了C/S的經(jīng)典三層架構(gòu),使系統(tǒng)更易使用和安全[4-5]。該平臺服務(wù)器端和數(shù)據(jù)庫架構(gòu)于Windows Server 2012 R2系統(tǒng),數(shù)據(jù)庫采用Microsoft SQL Server 2008。

1 TCP通信協(xié)議

在傳輸層,TCP協(xié)議和UDP協(xié)議是信息傳遞的兩個主要協(xié)議。TCP是一種面向連接的可靠的通信協(xié)議,即不用主機之間的通信需要通過“三次握手”建立連接,而UDP則提供了無連接的服務(wù),當報文發(fā)送之后無法得知其是否安全完整到達,因此本平臺使用面向連接的可靠TCP實現(xiàn)Socket通信。TCP使用面向連接的可靠的雙向通信數(shù)據(jù)流,使用“三次握手”傳輸數(shù)據(jù)。

2 Socket通信涉及的基本函數(shù)

2.1 創(chuàng)建套接字

M_Socket=Socket(AddressFamily,SocketType,ProtocolType);AddressFamily指定Socket地址簇類型,使用AF_INET,即TCP/IP協(xié)議簇;SocketType指定Socket請求協(xié)議類型,使用SOCK_STREAM,即表明數(shù)據(jù)基于TCP傳輸;ProtocolType指定Socket請求協(xié)議,使用0。

2.2 綁定套接字與服務(wù)器地址

Sockaddr_inaddr定義一個Sockaddr_in結(jié)構(gòu)體addr;addr.sin_family=AF_INET,定義結(jié)構(gòu)體通信協(xié)議為TCP/IP協(xié)議;Addr.sin_port=htons(6000),定義該結(jié)構(gòu)體的通信端口號為6000;Addr.sin_addr.S_un.S_addr=htonl(INADR_ANY),定義接受任意IP地址發(fā)送給服務(wù)端;Bind(M_Socket,(SOCKADDR*)&addr,sizeof(SOCKADDR)),該函數(shù)將本地主機以及端口號與所創(chuàng)建的套接字綁定起來。

2.3 監(jiān)聽連接

Listen(M_Socket,int backlog)函數(shù)在一個Socket的句柄上監(jiān)聽連接,可以讓M_Socket參數(shù)引用的Socket句柄標記成一個被動式的Socket,即可以用accept()函數(shù)去接受進來的連接請求。

2.4 建立連接

Connect(M_Socket,(structsockaddr *)&server_addr, sizeof(structsockaddr));connect()用于建立連接,M_Socket表示欲建立連接的本地套接字描述符,指出對方套接字保存著IP地址和端口號的結(jié)構(gòu)體指針。

2.5 接受連接請求

Accept(M_Socket,sIP,*nPORT)用于面向連接服務(wù)器,表示接受客戶機發(fā)來的連接請求。

2.6 發(fā)送和接收數(shù)據(jù)

Send(M_Socket,const char FAR *mesg,len,flags)用于發(fā)送數(shù)據(jù),M_Socket為本地套接字描述符,mesg指向存有發(fā)送數(shù)據(jù)的緩沖區(qū)的指針;Recv(M_Socket,char FAR *mesg,len,flags)用于接收數(shù)據(jù),M_Socket為已連接的套接字描述符,mesg指向接收輸入數(shù)據(jù)緩沖區(qū)的指針,長度為len,flags指定傳輸控制方式,如是否發(fā)送帶外數(shù)據(jù)等。

2.7 關(guān)閉套接字

CloseSocket(M_Socket)在完成通信鏈路的建立后,雙方進行數(shù)據(jù)交互,完畢后關(guān)閉套接字。

3 軟件設(shè)計

為實現(xiàn)水文數(shù)據(jù)庫管理平臺開發(fā),同時避免虛擬機開發(fā)測試后部署物理機帶來的問題,使用三臺物理機分別部署相關(guān)環(huán)境。使用兩臺物理機分別部署數(shù)據(jù)庫和水文數(shù)據(jù)庫管理平臺服務(wù)端,使用一臺物理機對客戶端和服務(wù)端程序進行編譯。

首先,使用Windows Server 2012 R2服務(wù)器部署SQL Server 2008,創(chuàng)建水文數(shù)據(jù)庫,設(shè)置數(shù)據(jù)庫登錄及平臺管理賬號密碼,并根據(jù)基礎(chǔ)水文數(shù)據(jù)庫表結(jié)構(gòu)及標識符標準創(chuàng)建相關(guān)表格,同時導入水文數(shù)據(jù)。其次,使用Windows 10專業(yè)版搭建Visual Studio 2015編譯環(huán)境,編譯服務(wù)器端和客戶端程序,編譯完成之后進行程序封裝。

3.1 服務(wù)端編譯

在CshuiwenApp的InitInstance()函數(shù)中添加數(shù)據(jù)庫連接,連接實現(xiàn)代碼如下:

if (!m_ado.Connect(CAdoLx::DBT_SQL, _T("shuiwen"), _T("administrator"), _T("sa"), _T("192.168.0.252"))){AfxMessageBox(m_ado.GetLastError());return FALSE;}

其中,調(diào)用CAdoLx實現(xiàn)數(shù)據(jù)庫連接,shuiwen為創(chuàng)建的水文數(shù)據(jù)庫,之后依次為數(shù)據(jù)庫密碼、數(shù)據(jù)庫賬號及數(shù)據(jù)庫IP地址。

在CshuiwenApp的InitInstance()函數(shù)中添加登錄窗口類,實現(xiàn)數(shù)據(jù)庫連接登錄。連接在實現(xiàn)代碼如下:sqlstr.Format(_T("SELECT * FROM admin WHERE 用戶名='%s' AND 密碼='%s' "), str1, str2)。要保證其和數(shù)據(jù)庫內(nèi)賬戶與密碼相匹配。

3.1.1 查詢模塊實現(xiàn)。strsql.Format(L"select * from ‘%swhere STCD=%s AND YR BETWEEN ‘%s AND %s order by STCD ASC ")需要客戶端傳遞查詢命令以及查詢的表名和限定性條件,服務(wù)端從數(shù)據(jù)庫調(diào)取數(shù)據(jù)并發(fā)送給客戶端。

3.1.2 導出模塊實現(xiàn)。CFileDialogdlg(FALSE, _T("xls"), _T("FileList"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Excel 文件(*.xls)|*.xls||")); dlg.m_ofn.lpstrTitle = _T("文件列表另存為")獲取文件存在的路徑調(diào)用系統(tǒng)中Excel驅(qū)動;sSql.Format(_T("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s"), sDriver, strFilePath, strFilePath)將驅(qū)動、路徑及文件格式化賦值給sSql,創(chuàng)建循環(huán)重新賦值給sSql,database.ExecuteSQL(sSql)執(zhí)行sql語句實現(xiàn)Excel表格的插入操作。

3.1.3 統(tǒng)計分析模塊實現(xiàn)。string s = "select ‘%s from ‘%s order by DTDesc";string s = "select ‘%s from ‘%s order by MTHDesc" string s = "select ‘%s from ‘%s order by YRDesc"通過安裝TeeChart控件,通過編輯框修改TeeChart圖的樣式屬性,如標題、是否3D顯示、背景色、x和y軸范圍大小等,并且通過sql語句選取需要統(tǒng)計的數(shù)據(jù),實現(xiàn)按天/月/年的統(tǒng)計曲線的繪制。

3.2 客戶端編譯

添加CTreeCtrl控件,m_root = m_tree.InsertItem(_T("基礎(chǔ)水文數(shù)據(jù)庫"));HTREEITEM m_ribiaolei;m_ribiaolei =m_tree.InsertItem(_T("日表類"),m_root);設(shè)置日表類、旬表類、月表類、年表類及其子樹,構(gòu)建樹形列表。

添加CListCtrl控件,m_ctllist.InsertColumn(0, _T("STCD"), LVCFMT_CENTER, 100, 0);m_ctllist.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);按照每個表分別插入不同表的列名,根據(jù)選中的表名在CListCtrl控件上顯示不同的表,添加查詢、導出、統(tǒng)計分析按鈕,實現(xiàn)對指令和參數(shù)的傳遞。

4 運行結(jié)果與分析

使用Windows Server 2012 R2服務(wù)器部署水文數(shù)據(jù)庫管理平臺服務(wù)端。分別使用Windows XP、Windows 7、Windows 10部署客戶端,對水文數(shù)據(jù)管理平臺進行測試分析。

4.1 編譯并執(zhí)行Server端程序

雙擊debug目錄下server.exe,此時,服務(wù)器端程序準備就緒,等待客戶端請求連接。

4.2 啟動client端程序

雙擊debug目錄下client.exe,彈出登錄界面,因連接服務(wù)端的IP地址及端口號已寫入程序,如果輸入賬號、密碼后成功登錄,就表明成功連接服務(wù)器端。

4.3 實現(xiàn)互相通信

連接成功后,彈出管理窗口,客戶機可自由發(fā)送查詢、導出、統(tǒng)計分析命令及參數(shù)。當選定限定條件,點擊查詢按鈕時,CListCtrl控件顯示查詢內(nèi)容;點擊導出按鈕,將查詢內(nèi)容保存至本地;點擊統(tǒng)計分析按鈕,會彈出統(tǒng)計分析結(jié)果窗口。

5 結(jié)果分析

結(jié)果表明,服務(wù)器和客戶端在成功連接后能夠?qū)崿F(xiàn)用戶登錄、查詢、導出、統(tǒng)計分析等功能,結(jié)果在窗體界面中顯示。經(jīng)測試,客戶端可在多種Windows操作系統(tǒng)下較好地和服務(wù)器進行數(shù)據(jù)交互,達到了預期目的,較好地實現(xiàn)了水文數(shù)據(jù)庫平臺的管理。

6 結(jié)語

基于Socket的水文數(shù)據(jù)庫管理平臺通過使用C++提供的Socket連接池構(gòu)建了經(jīng)典的三層結(jié)構(gòu),服務(wù)器作為中間層訪問數(shù)據(jù)庫,同時將數(shù)據(jù)信息返回至客戶端。由于客戶端、服務(wù)端與數(shù)據(jù)庫的分離增加了數(shù)據(jù)的安全性,當已有功能需要改變時,客戶端無須重新編譯。因此,該平臺不僅保障了系統(tǒng)安全,也避免了重要數(shù)據(jù)和功能的外漏,使整個系統(tǒng)穩(wěn)定安全運行。

參考文獻:

[1]周相麗,賀旭東.基礎(chǔ)水文數(shù)據(jù)庫導入導出工具設(shè)計與實現(xiàn)分析[J].河南水利與南水北調(diào),2017(2):38-39.

[2]王飄.基于ArcEngine的水文空間數(shù)據(jù)庫管理系統(tǒng)開發(fā)及應用研究[D].武漢:華中科技大學,2018.

[3]董玲燕,馬瑞,楊春花.基于ArcSDE的數(shù)字流域模型系統(tǒng)數(shù)據(jù)庫構(gòu)建方式研究[J].長江科學院院報,2011(12):103-106.

[4]況潤元,朱元峰,周凡.基于GIS的貢水流域水文信息分析系統(tǒng)設(shè)計與實現(xiàn)[J].水電能源科學,2013(2):180-182.

[5]王海峰,張偉.基于JavaSocket及數(shù)據(jù)庫連接池的農(nóng)業(yè)監(jiān)測系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2016(2):27-28.

猜你喜歡
數(shù)據(jù)庫管理
棗前期管理再好,后期管不好,前功盡棄
加強土木工程造價的控制與管理
如何加強土木工程造價的控制與管理
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
“這下管理創(chuàng)新了!等7則
雜文月刊(2016年1期)2016-02-11 10:35:51
人本管理在我國國企中的應用
主站蜘蛛池模板: 欧美日韩国产在线播放| 日韩在线观看网站| 58av国产精品| 亚洲成人黄色在线| 日韩欧美中文字幕一本| 亚洲中文精品久久久久久不卡| 全午夜免费一级毛片| 欧美人与牲动交a欧美精品 | 亚洲精品桃花岛av在线| 国产极品美女在线| 国产成人精品日本亚洲| 欧美成人手机在线观看网址| 久久影院一区二区h| 国产青榴视频在线观看网站| 91久久性奴调教国产免费| 国产精品欧美激情| 成人福利在线看| 国产成人免费高清AⅤ| 亚洲Aⅴ无码专区在线观看q| 91久久夜色精品国产网站| 欧美国产在线一区| 国产天天射| 无码av免费不卡在线观看| 国产成人亚洲毛片| 久久无码av三级| 亚洲福利视频一区二区| 免费看美女自慰的网站| 2020亚洲精品无码| 好吊妞欧美视频免费| 亚洲日本中文综合在线| 免费看久久精品99| 亚洲精品桃花岛av在线| 露脸一二三区国语对白| 五月天久久婷婷| 一级毛片免费高清视频| 好久久免费视频高清| 国产鲁鲁视频在线观看| 中文成人在线| 中文字幕在线观| 欧美一区日韩一区中文字幕页| 国产在线精品99一区不卡| 欧美精品三级在线| 精品国产成人三级在线观看| 国产一级无码不卡视频| 国产一级毛片yw| 久久久久亚洲AV成人人电影软件| 国产一级在线观看www色 | 蜜桃臀无码内射一区二区三区| 五月天香蕉视频国产亚| 亚洲成人一区二区三区| 26uuu国产精品视频| 992tv国产人成在线观看| 日韩精品高清自在线| 第一页亚洲| 日日碰狠狠添天天爽| 人妻精品全国免费视频| 日韩一区二区三免费高清| 欧美黄网站免费观看| 亚洲人人视频| 久久久久久午夜精品| 欧美一区国产| 中文字幕永久在线看| 又污又黄又无遮挡网站| 国产综合日韩另类一区二区| 无码丝袜人妻| 色妺妺在线视频喷水| 欧美一区二区三区国产精品| 91在线精品麻豆欧美在线| 国产精品刺激对白在线| 亚洲性日韩精品一区二区| 欧美成一级| 国产手机在线ΑⅤ片无码观看| 国产99视频精品免费视频7| 色婷婷电影网| 国产精品欧美日本韩免费一区二区三区不卡 | 亚洲人成网7777777国产| 啪啪啪亚洲无码| 国产乱子伦手机在线| 国产特一级毛片| 91综合色区亚洲熟妇p| 福利在线一区| 欧美色亚洲|