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

基于Socket的水文數據庫管理平臺的設計與實現

2020-08-04 21:59:42郭浩胡曉峰付航帥
河南科技 2020年17期
關鍵詞:數據庫管理

郭浩 胡曉峰 付航帥

摘 要:水文數據是水文研究和分析的重要依據,水文數據的科學管理是實現分級可視化、圖文查詢和統計分析的關鍵。基于Socket的水文數據庫管理平臺采用Microsoft Visual Studio 2015作為開發平臺,利用MFC構建水文數據庫管理平臺框架,利用SQL數據庫存儲數據。該平臺為進一步加強水文信息管理提供關鍵技術支持。

關鍵詞:水文數據;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

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

1 TCP通信協議

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

2 Socket通信涉及的基本函數

2.1 創建套接字

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

2.2 綁定套接字與服務器地址

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

2.3 監聽連接

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

2.4 建立連接

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

2.5 接受連接請求

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

2.6 發送和接收數據

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

2.7 關閉套接字

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

3 軟件設計

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

首先,使用Windows Server 2012 R2服務器部署SQL Server 2008,創建水文數據庫,設置數據庫登錄及平臺管理賬號密碼,并根據基礎水文數據庫表結構及標識符標準創建相關表格,同時導入水文數據。其次,使用Windows 10專業版搭建Visual Studio 2015編譯環境,編譯服務器端和客戶端程序,編譯完成之后進行程序封裝。

3.1 服務端編譯

在CshuiwenApp的InitInstance()函數中添加數據庫連接,連接實現代碼如下:

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

其中,調用CAdoLx實現數據庫連接,shuiwen為創建的水文數據庫,之后依次為數據庫密碼、數據庫賬號及數據庫IP地址。

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

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

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

3.1.3 統計分析模塊實現。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語句選取需要統計的數據,實現按天/月/年的統計曲線的繪制。

3.2 客戶端編譯

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

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

4 運行結果與分析

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

4.1 編譯并執行Server端程序

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

4.2 啟動client端程序

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

4.3 實現互相通信

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

5 結果分析

結果表明,服務器和客戶端在成功連接后能夠實現用戶登錄、查詢、導出、統計分析等功能,結果在窗體界面中顯示。經測試,客戶端可在多種Windows操作系統下較好地和服務器進行數據交互,達到了預期目的,較好地實現了水文數據庫平臺的管理。

6 結語

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

參考文獻:

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

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

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

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

[5]王海峰,張偉.基于JavaSocket及數據庫連接池的農業監測系統[J].物聯網技術,2016(2):27-28.

猜你喜歡
數據庫管理
棗前期管理再好,后期管不好,前功盡棄
今日農業(2022年15期)2022-09-20 06:56:20
加強土木工程造價的控制與管理
如何加強土木工程造價的控制與管理
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
“這下管理創新了!等7則
雜文月刊(2016年1期)2016-02-11 10:35:51
人本管理在我國國企中的應用
現代企業(2015年8期)2015-02-28 18:54:47
主站蜘蛛池模板: 自慰高潮喷白浆在线观看| 亚洲国产理论片在线播放| 精品99在线观看| 全色黄大色大片免费久久老太| 无码专区第一页| 日本道综合一本久久久88| 久草网视频在线| 久久黄色影院| 午夜福利无码一区二区| 伊人成人在线| 狠狠干综合| 2020亚洲精品无码| 亚洲一区二区黄色| 91福利一区二区三区| 国内精品久久久久久久久久影视 | 亚洲国产日韩欧美在线| 国产自产视频一区二区三区| 亚洲毛片在线看| 久久精品人人做人人爽97| 伊人五月丁香综合AⅤ| 91极品美女高潮叫床在线观看| 福利一区三区| 久久综合色视频| 国产凹凸一区在线观看视频| 国产又大又粗又猛又爽的视频| 亚洲欧美综合在线观看| 亚洲中文字幕国产av| 亚洲一区色| 美女被躁出白浆视频播放| 色婷婷国产精品视频| 91 九色视频丝袜| 国产精品午夜福利麻豆| 亚洲视频三级| 国产屁屁影院| 日韩一级二级三级| 欧美一级在线播放| 久久99精品久久久久纯品| AV不卡国产在线观看| 久久中文无码精品| 欧美一级高清免费a| 在线观看亚洲国产| 91在线精品麻豆欧美在线| 噜噜噜久久| 伊人AV天堂| 亚洲AV成人一区国产精品| 亚洲精品第一在线观看视频| 4虎影视国产在线观看精品| 中国特黄美女一级视频| 一级毛片不卡片免费观看| 99九九成人免费视频精品| 热99re99首页精品亚洲五月天| 国产成人精品一区二区| 亚洲色大成网站www国产| 91久久偷偷做嫩草影院免费看| jizz国产视频| 欧美成人免费| 欧美日韩国产综合视频在线观看| 久久综合九色综合97网| 国产网友愉拍精品| 精品撒尿视频一区二区三区| 在线一级毛片| 黄片一区二区三区| 国内黄色精品| 呦视频在线一区二区三区| 国产乱肥老妇精品视频| 毛片一区二区在线看| 国产精品无码制服丝袜| 日韩精品亚洲人旧成在线| 日韩av无码精品专区| 国产微拍一区二区三区四区| 国产精品成人一区二区不卡| 久久综合一个色综合网| 黄片在线永久| 美女无遮挡免费视频网站| 精品99在线观看| 欧美综合成人| 国产精品视屏| 精品国产欧美精品v| 国产麻豆另类AV| 国产精品女主播| 成人午夜视频免费看欧美| 黄色网在线|