国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C/C/S模式實(shí)時(shí)通信軟件設(shè)計(jì)與實(shí)現(xiàn)

2010-09-05 01:35:58爽,云
關(guān)鍵詞:接收數(shù)據(jù)發(fā)送數(shù)據(jù)鏈表

劉 爽,云 健

(大連民族學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,遼寧大連 116605)

C/C/S模式實(shí)時(shí)通信軟件設(shè)計(jì)與實(shí)現(xiàn)

劉 爽,云 健

(大連民族學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,遼寧大連 116605)

根據(jù)某引航站引航管理信息平臺(tái)的建設(shè)目標(biāo),設(shè)計(jì)了基于客戶端/客戶端 (中轉(zhuǎn)服務(wù)器)/服務(wù)器模式的實(shí)時(shí)通信軟件;介紹了該通信軟件的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),分析了服務(wù)器端和客戶端基于 TCP/IP協(xié)議的通信過(guò)程及接收發(fā)送數(shù)據(jù)工作流程;重點(diǎn)討論了如何利用嵌入式數(shù)據(jù)庫(kù)、變長(zhǎng)鏈表及多線程技術(shù)實(shí)現(xiàn)數(shù)據(jù)通信的完整性、實(shí)時(shí)性和安全性,并給出了 LoadRunner對(duì)通信軟件的測(cè)試結(jié)果。實(shí)踐表明,該通信軟件運(yùn)行可靠,傳輸穩(wěn)定。

C/S模式;多線程;嵌入式數(shù)據(jù)庫(kù);實(shí)時(shí);通信

1 系統(tǒng)概述

為確保港口水域運(yùn)輸安全、有序,根據(jù)某引航站引航調(diào)度管理的實(shí)際需求開(kāi)發(fā)了引航管理信息平臺(tái)。該平臺(tái)利用現(xiàn)代化的管理手段加強(qiáng)港口的信息交換,實(shí)現(xiàn)對(duì)港口中移動(dòng)目標(biāo)的實(shí)時(shí)監(jiān)控和動(dòng)態(tài)跟蹤,加強(qiáng)了調(diào)度引航的統(tǒng)一管理,以此達(dá)到提高整體工作效率、降低成本、促進(jìn)管理的目的,為企業(yè)提供信息化建設(shè)的全面解決方案。

通信軟件是整個(gè)管理信息平臺(tái)的核心環(huán)節(jié),實(shí)現(xiàn)了導(dǎo)航系統(tǒng)與監(jiān)控系統(tǒng)、引航調(diào)度系統(tǒng)之間的通信,即向監(jiān)控系統(tǒng)發(fā)送船舶、車輛動(dòng)態(tài)信息,從監(jiān)控系統(tǒng)接收它船的動(dòng)態(tài)信息;向引航調(diào)度系統(tǒng)發(fā)送計(jì)劃請(qǐng)求信息、引航開(kāi)始/結(jié)束時(shí)間、天氣預(yù)報(bào)請(qǐng)求信息、風(fēng)速儀請(qǐng)求信息,從引航調(diào)度系統(tǒng)接收引航計(jì)劃、天氣預(yù)報(bào)信息和風(fēng)速儀信息。管理信息平臺(tái)總體網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖 1。

通信軟件分為服務(wù)器端、客戶端中轉(zhuǎn)服務(wù)器端、局域網(wǎng)客戶端 3部分。服務(wù)器端通過(guò)串口接收通信運(yùn)營(yíng)商轉(zhuǎn)發(fā)過(guò)來(lái)的船舶 A IS/GPS、車輛GPS定位數(shù)據(jù),解析存入Oracle數(shù)據(jù)庫(kù),根據(jù)配置文件讀取有效轉(zhuǎn)發(fā)中心 IP地址和端口號(hào)列表,建立監(jiān)聽(tīng) Socket,接受客戶端連接請(qǐng)求,維護(hù)客戶端Socket鏈表。連接建立成功則把接收到的二進(jìn)制數(shù)據(jù)流通過(guò) TCP/IP協(xié)議發(fā)送到各客戶端中轉(zhuǎn)服務(wù)器處。中轉(zhuǎn)服務(wù)器接收到服務(wù)器發(fā)來(lái)數(shù)據(jù)后依據(jù)配置文件 UDPClient.txt,讀取各終端用戶的 IP地址和端口號(hào),并根據(jù)用戶數(shù)目每 20個(gè)用戶創(chuàng)建一個(gè)套接字,然后通過(guò)UDP協(xié)議將二進(jìn)制格式數(shù)據(jù)發(fā)送到局域網(wǎng)各客戶端,同時(shí)對(duì)接收到的數(shù)據(jù)解析以數(shù)據(jù)表格形式顯示。局域網(wǎng)客戶端只接收數(shù)據(jù),按通信協(xié)議解析,以數(shù)據(jù)表格形式顯示或是疊加到電子海圖上顯示即可。

數(shù)據(jù)通信的效率決定了整個(gè)管理信息平臺(tái)的性能,因此采用了嵌入式數(shù)據(jù)、變長(zhǎng)鏈?zhǔn)酱鎯?chǔ)及多線程技術(shù)來(lái)實(shí)現(xiàn)通信軟件的實(shí)時(shí)、準(zhǔn)確、高效。

圖1 通信軟件網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖

2 通信軟件總體設(shè)計(jì)

引航管理信息平臺(tái)監(jiān)控系統(tǒng)使用 C++作為開(kāi)發(fā)語(yǔ)言,Visual Studio 2005作為開(kāi)發(fā)工具,引航調(diào)度系統(tǒng)使用 Java作為開(kāi)發(fā)語(yǔ)言,MyEclipse6.5作為開(kāi)發(fā)工具,為實(shí)現(xiàn)與兩系統(tǒng)的兼容并保證通信的實(shí)時(shí)高效,通信軟件采用 C++作為開(kāi)發(fā)語(yǔ)言。整個(gè)通信軟件設(shè)計(jì)開(kāi)發(fā)過(guò)程采用面向?qū)ο蠓椒?使用UML2.0作為描述工具。

服務(wù)器端工作過(guò)程[1-2]如下:首先與通信運(yùn)營(yíng)商轉(zhuǎn)發(fā) GPS/A IS數(shù)據(jù)中心建立 TCP/IP連接,啟動(dòng)接收數(shù)據(jù)線程,負(fù)責(zé)接收二進(jìn)制數(shù)據(jù)文件;處理數(shù)據(jù)線程,負(fù)責(zé)解析二進(jìn)制數(shù)據(jù),在界面上顯示并存入服務(wù)器的 Oracle數(shù)據(jù)庫(kù);監(jiān)聽(tīng)客戶端連接線程,負(fù)責(zé)建立用戶 Socket和監(jiān)聽(tīng) Socket的連接;發(fā)送數(shù)據(jù)線程負(fù)責(zé)向合法客戶端(中轉(zhuǎn)服務(wù)器)發(fā)送二進(jìn)制數(shù)據(jù)。其中的 Socket采用阻塞類 CSocket作為基類,CSocket類在非阻塞 Socket基礎(chǔ)之上實(shí)現(xiàn)了阻塞操作,在阻塞期間實(shí)現(xiàn)了消息循環(huán)[3-4]。

在服務(wù)器與客戶端(中轉(zhuǎn)服務(wù)器)通過(guò) TCP/ IP協(xié)議建立連接過(guò)程中,服務(wù)器端維護(hù)一個(gè)合法客戶端請(qǐng)求鏈表,對(duì)長(zhǎng)時(shí)間不接收數(shù)據(jù)的客戶端或是網(wǎng)絡(luò)連接出現(xiàn)故障的客戶端定期刪除更新,對(duì)合法客戶端接受請(qǐng)求發(fā)送數(shù)據(jù)。

客戶端(中轉(zhuǎn)服務(wù)器)工作過(guò)程如下:當(dāng)客戶端應(yīng)用程序向服務(wù)器發(fā)出連接請(qǐng)求時(shí),啟動(dòng)連接線程,負(fù)責(zé)與服務(wù)器建立網(wǎng)絡(luò)連接,定時(shí)檢查是否出現(xiàn)網(wǎng)絡(luò)故障或服務(wù)器重啟等情況,出現(xiàn)錯(cuò)誤則重連。服務(wù)器首先讀取 config.txt文件,查找客戶端 IP地址是否合法,合法則接受連接請(qǐng)求。建立完連接后客戶端會(huì)再向服務(wù)器發(fā)送讀取數(shù)據(jù)請(qǐng)求,服務(wù)器端處理請(qǐng)求后開(kāi)始發(fā)送數(shù)據(jù)。當(dāng)指定端口開(kāi)始有數(shù)據(jù)寫入,中轉(zhuǎn)服務(wù)器啟動(dòng)讀數(shù)據(jù)線程,直接讀取網(wǎng)卡緩沖區(qū)數(shù)據(jù),寫入到一個(gè)變長(zhǎng)鏈表中,避免數(shù)據(jù)丟失;在視圖的初始化更新操作中啟動(dòng)數(shù)據(jù)處理進(jìn)程,從消息鏈表中讀取數(shù)據(jù),逐條解析,插入或更新數(shù)據(jù)庫(kù)中數(shù)據(jù),并顯示到界面上,處理完的數(shù)據(jù)則全部刪除。在接收數(shù)據(jù)的同時(shí),啟動(dòng)發(fā)送數(shù)據(jù)線程,讀取UDPClient.txt配置文件獲取局域網(wǎng)內(nèi)各終端用戶的 IP地址和端口號(hào),每 20個(gè)客戶端建立一個(gè)基于UDP協(xié)議的 Socket,之后開(kāi)始持續(xù)傳送二進(jìn)制數(shù)據(jù)文件。

第二級(jí)客戶端即局域網(wǎng)客戶端軟件功能較簡(jiǎn)單,就是接收二進(jìn)制數(shù)據(jù),按通信協(xié)議解析,存入數(shù)據(jù)庫(kù),可供監(jiān)控系統(tǒng)調(diào)用在電子海圖上顯示監(jiān)視目標(biāo)的動(dòng)態(tài)情況。

服務(wù)器端和兩級(jí)客戶端應(yīng)用程序接收數(shù)據(jù)解析過(guò)程基本相同,即在指定端口接收數(shù)據(jù),按通信協(xié)議格式解析接收到的數(shù)據(jù),存入數(shù)據(jù)庫(kù)表,其活動(dòng)圖如圖2。

兩級(jí)客戶端發(fā)送數(shù)據(jù)活動(dòng)圖如圖 3。

服務(wù)器端應(yīng)用程序通過(guò)短信向船載或車載終端發(fā)送天氣信息、風(fēng)向信息,實(shí)現(xiàn)過(guò)程是把需要發(fā)送的數(shù)據(jù)封裝成規(guī)定的通信協(xié)議格式,由無(wú)線運(yùn)營(yíng)商轉(zhuǎn)發(fā)到終端 S IM卡上。而兩級(jí)客戶端通過(guò)服務(wù)器向終端發(fā)送引航計(jì)劃請(qǐng)求信息或是引航開(kāi)始/結(jié)束時(shí)間等數(shù)據(jù)時(shí)過(guò)程類似,只是發(fā)送的目的地是指定的 IP地址和端口。

圖2 接收數(shù)據(jù)處理活動(dòng)圖

圖3 兩級(jí)客戶端發(fā)送數(shù)據(jù)活動(dòng)圖

3 提高通信軟件性能的 3種技術(shù)

3.1 嵌入式數(shù)據(jù)庫(kù)

為降低應(yīng)用程序與大型數(shù)據(jù)庫(kù)交互的代價(jià),第一級(jí)客戶端采用嵌入式數(shù)據(jù)庫(kù) Sqlite3[2]。

Sqlite3作為嵌入式數(shù)據(jù)庫(kù),占有資源少,小巧、速度快。Sqlite3與 access一樣是文件型數(shù)據(jù)庫(kù),就是說(shuō),一個(gè)數(shù)據(jù)庫(kù)就是一個(gè)文件,在此數(shù)據(jù)庫(kù)里可以建立很多的表,建立索引、觸發(fā)器等等,但實(shí)際上就是一個(gè)文件。備份這個(gè)文件就備份了整個(gè)數(shù)據(jù)庫(kù),占用存儲(chǔ)空間非常小。

Sqlite3不需要任何數(shù)據(jù)庫(kù)引擎,即使用Sqlite3來(lái)保存一些用戶數(shù)據(jù),也不需要安裝數(shù)據(jù)庫(kù)。它提供了一系列 C函數(shù)接口,通過(guò)這些接口,傳遞一些標(biāo)準(zhǔn) SQL語(yǔ)句就能夠操縱數(shù)據(jù)庫(kù)。

Sqlite3使用讀、寫鎖控制對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。典型地,其他嵌入式的 SQL數(shù)據(jù)庫(kù)引擎同時(shí)只允許一個(gè)進(jìn)程連接到數(shù)據(jù)庫(kù)。目前,只有 Sqlite3的SQL數(shù)據(jù)庫(kù)引擎能處理如此多的并發(fā)操作,即允許多個(gè)進(jìn)程同時(shí)打開(kāi)一個(gè)數(shù)據(jù)庫(kù),同時(shí)讀一個(gè)數(shù)據(jù)庫(kù)。當(dāng)有任何進(jìn)程需要寫數(shù)據(jù)時(shí),必須在更新過(guò)程中鎖住數(shù)據(jù)庫(kù)文件。

3.2 多線程技術(shù)

多線程編程技術(shù)[6]是將程序任務(wù)分成多個(gè)并行的子任務(wù),特別是在網(wǎng)絡(luò)編程中,很多可以并發(fā)執(zhí)行的功能利用多線程可以提高程序的快速響應(yīng)。為了保證用戶總能夠在很短的時(shí)間內(nèi)完成與應(yīng)用程序的交互,本文的通信軟件服務(wù)器端和一級(jí)客戶端都采用了多線程技術(shù)。

服務(wù)器端應(yīng)用程序主要由接收數(shù)據(jù)線程、處理數(shù)據(jù)線程、監(jiān)聽(tīng)客戶端連接線程、發(fā)送數(shù)據(jù) 4個(gè)線程組成。程序開(kāi)始即啟動(dòng)監(jiān)聽(tīng)客戶端連接線程,負(fù)責(zé)建立用戶 Socket和監(jiān)聽(tīng) Socket的連接。連接建立后啟動(dòng)接收數(shù)據(jù)線程,負(fù)責(zé)接收二進(jìn)制數(shù)據(jù)文件;處理數(shù)據(jù)線程由接收線程啟動(dòng),負(fù)責(zé)解析二進(jìn)制數(shù)據(jù),在界面上顯示并存入服務(wù)器數(shù)據(jù)庫(kù)。

客戶端中轉(zhuǎn)服務(wù)器應(yīng)用程序啟動(dòng) 4個(gè)線程,包括連接線程、接收數(shù)據(jù)線程、處理數(shù)據(jù)線程、發(fā)送數(shù)據(jù)線程,完成數(shù)據(jù)的接收和解析、顯示、傳送功能。

使用多線程技術(shù)就存在數(shù)據(jù)同步問(wèn)題。該通信軟件在測(cè)試過(guò)程中就出現(xiàn)了二級(jí)客戶端數(shù)據(jù)與服務(wù)器數(shù)據(jù)不同步,且數(shù)據(jù)過(guò)少問(wèn)題。經(jīng)調(diào)試發(fā)現(xiàn),對(duì)接收數(shù)據(jù)的變長(zhǎng)鏈表加鎖時(shí)間存在問(wèn)題。在對(duì)鏈表未加鎖操作之前,可能會(huì)出現(xiàn)將處理線程切換到接收線程的情況,當(dāng)再切換到該線程的時(shí)候,m_s MsgQueue的大小就發(fā)生了變化,隨著鏈表數(shù)量的增大,查找時(shí)間越來(lái)越長(zhǎng),而放到鏈表后面的數(shù)據(jù)長(zhǎng)期得不到執(zhí)行,就產(chǎn)生了程序運(yùn)行不順暢,數(shù)據(jù)更新慢現(xiàn)象。針對(duì)這一情況,把加鎖操作時(shí)間點(diǎn)提前,保證每次線程跳到 OnProcess Message()函數(shù)時(shí)一次執(zhí)行完畢,避免發(fā)生鏈表數(shù)量越來(lái)越大的現(xiàn)象。

3.3 變長(zhǎng)鏈?zhǔn)酱鎯?chǔ)

鏈?zhǔn)酱鎯?chǔ)可以零散分配存儲(chǔ)空間,比線性存儲(chǔ)結(jié)構(gòu)插入、刪除等操作的效率更高。通信軟件中的服務(wù)器和兩級(jí)客戶端接收數(shù)據(jù)的線程都使用了變長(zhǎng)鏈表來(lái)存儲(chǔ)接收的數(shù)據(jù),一是保證存取操作效率,二是變長(zhǎng)適應(yīng)了不同數(shù)量終端的需求。

同時(shí)把變長(zhǎng)鏈表和多線程結(jié)合使用。如中轉(zhuǎn)服務(wù)器數(shù)據(jù)處理線程中當(dāng)鏈表中的元素個(gè)數(shù)位于100和 200之間時(shí)該線程的優(yōu)先級(jí)提高到THREAD_PR IOR ITY_ABOVE_NORMAL,當(dāng)優(yōu)先級(jí)在 200以上時(shí)將優(yōu)先級(jí)提高到 THREAD_PR IOR ITY_H IGHEST,低于 100時(shí)設(shè)成正常模式。此外在鏈表數(shù)據(jù)量大于零時(shí)將休眠時(shí)間縮短到 10 ms,否則提高到 500 ms。對(duì)鏈表的動(dòng)態(tài)維護(hù)一是防止鏈表中留有過(guò)多數(shù)據(jù)得不到及時(shí)的入庫(kù)和發(fā)送,二是防止 CPU分配過(guò)少資源給接收線程,使接收緩沖區(qū)留有過(guò)多數(shù)據(jù)得不到及時(shí)接收,能夠自適應(yīng)調(diào)整線程的優(yōu)先級(jí),合理利用 CPU資源。

4 性能測(cè)試

由于通信軟件的關(guān)鍵性能在于高效傳輸數(shù)據(jù),對(duì)界面要求不多,因此這里不再給出界面效果,只給出測(cè)試軟件 LoadRunner[7]對(duì) 200個(gè)移動(dòng)目標(biāo)同時(shí)發(fā)送數(shù)據(jù)的測(cè)試結(jié)果。圖 4為W indows資源圖。

圖 4 通信軟件測(cè)試W indows資源圖

其縱坐標(biāo)是資源使用率 (Resources Usage)。W indows資源圖描述W indows主機(jī)的系統(tǒng)資源摘要。最高的一條曲線為 CPU使用率,第二、第三條曲線為以 K字節(jié)計(jì)算和M字節(jié)計(jì)算的物理內(nèi)存可用字節(jié)數(shù),最低的第四條曲線是磁盤驅(qū)動(dòng)器忙于讀或?qū)懭胩峁┓?wù)所用的時(shí)間百分比。由此圖可知,服務(wù)器的 CPU使用率均值為 66.164%,磁盤驅(qū)動(dòng)器忙的時(shí)間百分比均值為 4.99%,可用物理內(nèi)存在 2149.57 M左右,說(shuō)明通信軟件性能能夠滿足 200個(gè)用戶并發(fā)操作的請(qǐng)求。

5 結(jié) 語(yǔ)

本文開(kāi)發(fā)的系統(tǒng)目前已在某引航站交付使用,系統(tǒng)運(yùn)行穩(wěn)定。本系統(tǒng)服務(wù)器和兩級(jí)客戶端之間的數(shù)據(jù)傳輸采用客戶端/客戶端/服務(wù)器模式,基于 Visual Studio 2005開(kāi)發(fā)平臺(tái)編程實(shí)現(xiàn),而服務(wù)器、客戶端軟件均采用多線程技術(shù)。實(shí)踐表明,嵌入式數(shù)據(jù)庫(kù)、變長(zhǎng)鏈表和多線程技術(shù)可以實(shí)現(xiàn)高性能可靠的數(shù)據(jù)通信。

[1]劉爽,賈傳熒,陳鵬.基于 C/S結(jié)構(gòu)的車輛監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(12): 3320-3323.

[2]劉爽,史國(guó)友,張遠(yuǎn)強(qiáng).基于 TCP/IP協(xié)議和多線程的通信軟件的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)工程與設(shè)計(jì), 2010,31(7):1417-1420,1522.

[3]施煒,李錚,秦穎.W indows Sockets規(guī)范及應(yīng)用 -W indows網(wǎng)絡(luò)編程接口 [M].北京:清華大學(xué)出版社,2000.

[4]吳暾華.網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)中數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn) [J].計(jì)算機(jī)工程與設(shè)計(jì),2004,25(6):971-974.

[5]OWENSM.The Definitive Guide to SQLite[M].New York:Apress,2006.

[6]HUGHES C,HUGHES T.C++面向?qū)ο蠖嗑€程編程[M].周良忠,譯.北京:人民郵電出版社,2003.

[7]于涌.軟件性能測(cè)試與 LoadRunner實(shí)戰(zhàn)[M].北京:人民郵電出版社,2008.

(責(zé)任編輯 劉敏)

Design and I mplementation of Real-t ime Commun ication Software in Client/Client/ServerM ode

L IU Shuang,YUN Jian
(College of Computer Science&Engineering,Dalian NationalitiesUniversity,Dalian Liaoning 116605,China)

To achieve the goal of a pilotage management infor mation platfor m for some piloting station,we designed real-time communication software based on the client/client(relay server)/servermode.Thispaperpresents the network topology of the software and analyzes the communication process between the server and the client through TCP/IP and the workflow of data reception/transmission.The discussion is focused on how to ensure the integrity,real time and security of data communication using embedded databases,variable-length chain tables and multithreading technology. It also gives the result of communication software tests made with LoadRunner.It turns out that the sof tware runs reliablywith steady trans mission.

client/servermode;multithread;embedded database;real-time;communication

book=9,ebook=234

TP393.09

A

1009-315X(2010)05-0477-04

2010-6-21

大連民族學(xué)院博士啟動(dòng)金資助項(xiàng)目(20076207)。

劉爽 (1977-),女,滿族,遼寧錦州人,副教授,博士,主要從事智能交通系統(tǒng)、機(jī)器學(xué)習(xí)研究。

猜你喜歡
接收數(shù)據(jù)發(fā)送數(shù)據(jù)鏈表
移動(dòng)自組網(wǎng)中MAC層協(xié)議研究
沖激噪聲背景下基于幅度預(yù)處理的測(cè)向新方法*
基于二進(jìn)制鏈表的粗糙集屬性約簡(jiǎn)
跟麥咭學(xué)編程
低復(fù)雜度多輸入多輸出雷達(dá)目標(biāo)角度估計(jì)方法
基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點(diǎn)性能分析
帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
基于鏈表多分支路徑樹(shù)的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
使用IPSec安全傳輸數(shù)據(jù)
單片機(jī)模擬串口數(shù)據(jù)接收程序的實(shí)現(xiàn)及優(yōu)化
湖南省| 邳州市| 绥宁县| 吴旗县| 来凤县| 丽水市| 佛学| 开鲁县| 陇川县| 南陵县| 遂宁市| 瑞昌市| 习水县| 托克逊县| 随州市| 丹棱县| 九寨沟县| 岗巴县| 札达县| 花垣县| 青州市| 青岛市| 准格尔旗| 宁安市| 黑山县| 黄陵县| 会东县| 永修县| 桓仁| 延津县| 霸州市| 广丰县| 博乐市| 嘉定区| 丹棱县| 晋城| 灵宝市| 年辖:市辖区| 大兴区| 丰镇市| 安庆市|