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

?

浦煤網(wǎng)絡(luò)檢測與報(bào)警程序的實(shí)現(xiàn)

2014-07-01 19:45:26上海浦東煤氣制氣有限公司馮德強(qiáng)
上海煤氣 2014年1期
關(guān)鍵詞:網(wǎng)管網(wǎng)絡(luò)設(shè)備實(shí)例

上海浦東煤氣制氣有限公司 馮德強(qiáng)

浦煤網(wǎng)絡(luò)檢測與報(bào)警程序的實(shí)現(xiàn)

上海浦東煤氣制氣有限公司 馮德強(qiáng)

上海浦東煤氣制氣有限公司為了確保公司各項(xiàng)業(yè)務(wù)數(shù)據(jù)安全傳輸,開發(fā)設(shè)計(jì)了Win Form應(yīng)用程序,對網(wǎng)絡(luò)設(shè)備實(shí)施連續(xù)(周期)檢測。實(shí)際運(yùn)行后,證實(shí)此檢測方法安全可靠,且能幫助網(wǎng)管人員快速判斷和解決事故,工作效率得以顯著提高。

網(wǎng)絡(luò)管理 報(bào)警程序 程序設(shè)計(jì)

0 前言

2013年的春天,對于上海浦東煤氣制氣有限公司(簡稱浦煤公司)的信息管理來說是一個(gè)非常重要的時(shí)間節(jié)點(diǎn)。伴隨浦煤公司的成功轉(zhuǎn)型,我們的計(jì)算機(jī)網(wǎng)絡(luò)走出了圍墻,延伸到了公司新開設(shè)的各個(gè)站點(diǎn),承擔(dān)起傳輸浦煤公司各項(xiàng)業(yè)務(wù)數(shù)據(jù)的重任,成為那些走出圍墻的服務(wù)板塊的員工們不可或缺的工作幫手。如何管好這張沉甸甸的城域網(wǎng),使之更好、更安全地為浦煤公司發(fā)展服務(wù),成為公司網(wǎng)絡(luò)管理人員的一項(xiàng)急需解決的課題。

1 浦煤城域網(wǎng)簡介

浦煤城域網(wǎng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)見圖1。

圖1 浦煤城域網(wǎng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)示意

浦煤各個(gè)站點(diǎn)與公司本部通過東方有線的MSTP、MPLS-VPN專線互聯(lián),共同組成浦煤城域網(wǎng)。同時(shí),站點(diǎn)根據(jù)授權(quán)訪問相應(yīng)銷售公司的業(yè)務(wù)網(wǎng)絡(luò),網(wǎng)絡(luò)授權(quán)則由網(wǎng)絡(luò)平臺提供方——東方有線與相應(yīng)銷售公司通過路由配置實(shí)現(xiàn)。

2 需求分析

公司目前開展的安檢、抄表業(yè)務(wù)對我們的網(wǎng)絡(luò)管理提出較高要求。城域網(wǎng)上任何一臺網(wǎng)絡(luò)設(shè)備發(fā)生故障都可能影響到部分乃至全體服務(wù)板塊同仁的工作。因此,“及時(shí)發(fā)現(xiàn)故障,盡快排除故障”成為對公司網(wǎng)管人員日常工作的基本要求。

曾經(jīng)發(fā)生過這樣一個(gè)案例:有一段時(shí)間,正是高橋花山路抄表員們最繁忙的時(shí)刻,以至于晚上還要加班加點(diǎn)地干??删驮谀莻€(gè)時(shí)候,網(wǎng)絡(luò)莫名其妙地出了問題;一連幾天,同樣的時(shí)間,同樣的問題反復(fù)出現(xiàn)。

他們把這個(gè)問題反映到計(jì)算機(jī)中心,我們立即對城域網(wǎng)進(jìn)行測試,得出的結(jié)論是一切正常。問題是,一切正常的網(wǎng)絡(luò)偏偏在我們下班無人職守的那段時(shí)間發(fā)生了問題。等到第二天我們再上班的時(shí)候,一切又歸于正常。晚上究竟發(fā)生了什么?我們迫切需要弄明白。那么,如何才能發(fā)現(xiàn)這個(gè)網(wǎng)絡(luò)故障呢?如果我們能設(shè)計(jì)一款應(yīng)用程序,讓它自動(dòng)檢測網(wǎng)絡(luò)上的路由器、交換機(jī)、服務(wù)器等核心設(shè)備,一旦發(fā)現(xiàn)設(shè)備連通異常,立即報(bào)警,并將檢測結(jié)果記錄在案,那么,高橋花山路站點(diǎn)碰到的問題就可迎刃而解了。

首先,讓我們了解一下浦煤網(wǎng)管通常采用的網(wǎng)絡(luò)設(shè)備測試方法。

圖2 浦煤網(wǎng)絡(luò)設(shè)備測試流程示意

對圖2作如下說明:

第1步:確定需要檢測的主機(jī)的IP地址,并向該主機(jī)發(fā)送不大于32 kb的ICMP數(shù)據(jù)報(bào);

第2步:接收該主機(jī)的回送ICMP報(bào)文;

第3步:對回送報(bào)文進(jìn)行分析,確定目標(biāo)主機(jī)的連線狀態(tài);

第4步:如果得到的結(jié)果為異常,則采取措施查清故障原因并修復(fù)。

在實(shí)際應(yīng)用中,我們或許有這樣的體驗(yàn),即多臺網(wǎng)絡(luò)設(shè)備連通問題。此時(shí),我們通常的做法就是同時(shí)測試足夠多的設(shè)備,根據(jù)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),通過分析測試結(jié)果,定位故障設(shè)備。

這是一個(gè)被動(dòng)檢測方法,因?yàn)橹挥挟?dāng)有人向我們報(bào)告網(wǎng)絡(luò)故障時(shí),我們才啟動(dòng)這個(gè)檢測流程,定位故障點(diǎn)。其實(shí),在現(xiàn)有技術(shù)條件下,我們完全可以化被動(dòng)為主動(dòng),讓這個(gè)過程自動(dòng)化、程序化、定期化,對網(wǎng)絡(luò)設(shè)備主動(dòng)實(shí)施連續(xù)(周期)檢測,發(fā)現(xiàn)問題,即刻報(bào)警。因此,從某種程度上說,圖2可以視作我們這個(gè)解決方案的核心原理示意。

3 程序框架類庫設(shè)計(jì)

根據(jù)上述需求分析,我們認(rèn)為要做的就是用代碼實(shí)現(xiàn)圖2所示的測試流程。讓程序在某一個(gè)特定的時(shí)間范圍內(nèi)對核心設(shè)備檢測一遍。如發(fā)現(xiàn)故障,就立即報(bào)警,為網(wǎng)管人員提供故障設(shè)備信息。要實(shí)現(xiàn)這個(gè)目標(biāo),需實(shí)現(xiàn)下列功能模塊:

3.1 數(shù)據(jù)存儲與查詢

網(wǎng)絡(luò)設(shè)備信息、網(wǎng)管人員E-Mail信箱及檢測結(jié)果等都需要數(shù)據(jù)庫來存儲。按公司傳統(tǒng),我們使用MS SQL Server作后臺數(shù)據(jù)庫,而數(shù)據(jù)存儲與訪問則采用LINQ TO SQL技術(shù)。

LINQ TO SQL是包含在.NET Framework 3.5版中的一種O/RM組件(對象關(guān)系映射),O/RM允許使用.NET的類來對關(guān)系數(shù)據(jù)庫進(jìn)行建模。它可以使用LINQ對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢、更新、添加、刪除。LINQ TO SQL提供了對事務(wù)、視圖、存儲過程的完全支持。它同樣為集成數(shù)據(jù)校驗(yàn)和業(yè)務(wù)層邏輯到你的數(shù)據(jù)模型中提供了一種簡單的實(shí)現(xiàn)方式。在LINQ TO SQL中,關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型映射到用開發(fā)人員所用的編程語言表示的對象模型。

DataContext是LINQ TO SQL框架的主入口點(diǎn),用來連接數(shù)據(jù)庫、從數(shù)據(jù)庫檢索數(shù)據(jù)以及將更改提交回?cái)?shù)據(jù)庫。簡而言之,DataContext其實(shí)就是先將實(shí)體類轉(zhuǎn)換成相應(yīng)的SQL語句,并將其發(fā)送數(shù)據(jù)庫執(zhí)行,然后將返回的執(zhí)行結(jié)果匯編成實(shí)體對象,供應(yīng)用程序調(diào)用。

在實(shí)際應(yīng)用場景中,我們先定義了繼承DataContext類自clsDataContext的子類。在子類clsDataContext中定義了三個(gè)Table類型的對象即Computer、TestResult和EMailList。這三個(gè)Table對象分別指向我們事先定義的實(shí)體類clsComputer、TResult、TEmailList類。而在這些實(shí)體類中,我們將數(shù)據(jù)庫中的表、字段分別與其類名、實(shí)行進(jìn)行綁定映射。值得注意的是,為實(shí)現(xiàn)這些實(shí)體類,需要引用System、System.Data、System. Data.Linq、System.Linq、System.Data.Linq.Mapping及System.ComponentModel等命名空間。

如此設(shè)定之后,我們通過實(shí)例化子類clsDataContext,就能對數(shù)據(jù)庫進(jìn)行查詢、更新、添加、刪除等操作。

3.2 自動(dòng)檢測網(wǎng)絡(luò)設(shè)備運(yùn)行狀態(tài)的類

這是程序的核心類,前面所介紹的系統(tǒng)原理的核心部分,是在這個(gè)類中實(shí)現(xiàn)的。需要特別指出的是,這個(gè)類中用到了ICMP協(xié)議。

ICMP是“Internet Control Message Protocol”(Internet控制消息協(xié)議)的縮寫。它是TCP/IP協(xié)議族的一個(gè)子協(xié)議,用于在IP主機(jī)、路由器之間傳遞控制消息。控制消息是指網(wǎng)絡(luò)通不通、主機(jī)是否可達(dá)、路由是否可用等網(wǎng)絡(luò)本身的消息。這些控制消息雖然并不傳輸用戶數(shù)據(jù),但是對于用戶數(shù)據(jù)的傳遞起著重要的作用。

我們在網(wǎng)絡(luò)中經(jīng)常會(huì)使用到ICMP協(xié)議,只不過我們覺察不到而已。比如我們經(jīng)常使用的檢查網(wǎng)絡(luò)通不通的Ping命令,這個(gè)“Ping”的過程實(shí)際上就是ICMP協(xié)議工作的過程。還有其他的網(wǎng)絡(luò)命令如跟蹤路由的Tracert命令也是基于ICMP協(xié)議的。

微軟在.NET.Framework中提供了一個(gè)ICMP協(xié)議的Ping類,在System.Net.NetworkInformationmin命名空間內(nèi),我們用這個(gè)類實(shí)現(xiàn)檢測網(wǎng)絡(luò)設(shè)備連通狀態(tài)。

Ping類中有一個(gè)Send方法。這個(gè)方法將數(shù)據(jù)緩沖區(qū)里的ICMP回送消息發(fā)送到指定IpAddress或名稱的目標(biāo)計(jì)算機(jī)。目標(biāo)計(jì)算機(jī)接收到這個(gè)ICMP數(shù)據(jù)報(bào)后,就會(huì)向?qū)Ψ交厮鸵粋€(gè)ICMP格式的應(yīng)答數(shù)據(jù)報(bào),微軟把該數(shù)據(jù)報(bào)封裝成PingReply對象。PingReply對象中有一個(gè)Status屬性。這個(gè)屬性是一個(gè)IpStatus枚舉類型(IpStatus枚舉了諸如Timeout、Success等多種狀態(tài))。由于我們的程序只關(guān)心網(wǎng)絡(luò)設(shè)備是否在線,因此在代碼中我們僅分析這個(gè)Status屬性。通過它判斷被測試主機(jī)是否在線。通常交換機(jī)、路由器在進(jìn)行安全配置時(shí)至少(或全部)允許部分ICMP報(bào)通過,因此,這個(gè)連通狀態(tài)就成為我們判斷設(shè)備運(yùn)是否在線的重要依據(jù)。

具體實(shí)現(xiàn)步驟如下:

第1步:實(shí)例化子類clsDataContext,獲得需要檢測的設(shè)備列表;

第2步:實(shí)例化Ping類;

第3步:調(diào)用Encoding.ASCII.GetBytes生成二進(jìn)制緩沖數(shù)組;

第4步:實(shí)例化PingOptions類;

第5步:聲明Timeout參數(shù)并賦值即設(shè)定超時(shí)值;

第6步:遍歷設(shè)備列表,用上述3、4、5參數(shù)及設(shè)備IpAddress調(diào)用Ping 的實(shí)例方法Send,測試設(shè)備的連通狀態(tài);

第7步:將返回結(jié)果中的PingReply.Status記錄到TestResult表;

第8步:測試結(jié)束,將新增數(shù)據(jù)提交到數(shù)據(jù)庫,關(guān)閉數(shù)據(jù)連接,銷毀clsDataContext和Ping 的實(shí)例對象。

3.3 語音報(bào)警

在一定的時(shí)鐘周期里,程序自動(dòng)輪詢TestResult表,檢查表中是否有運(yùn)行狀態(tài)異常信息,如果有就觸發(fā)語音報(bào)警。顯然,這個(gè)功能要用到語音合成技術(shù)。

語音合成又稱文語轉(zhuǎn)換(Text to Speech)技術(shù),能將任意文字信息實(shí)時(shí)轉(zhuǎn)化為標(biāo)準(zhǔn)流暢的語音朗讀出來,它涉及聲學(xué)、語言學(xué)、數(shù)字信號處理、計(jì)算機(jī)科學(xué)等多個(gè)學(xué)科技術(shù)是中文信息處理領(lǐng)域的一項(xiàng)前沿技術(shù)。目前,許多學(xué)習(xí)軟件都使用了TTS技術(shù)。利用TTS可以實(shí)現(xiàn)真人發(fā)音、控制音量速率等功能。

.NET Framework 3.0中增加了System.Speech命名空間,使用這個(gè)空間的類和方法可以開發(fā)具有語音合成與識別功能的軟件。位于System.Speech. Synthesis命名空間里的SpeechSynthesizer類是實(shí)現(xiàn)TTS技術(shù)的核心類。

這個(gè)類中有一個(gè)方法Speak,它的功能就是在內(nèi)存中將輸入的文本文字轉(zhuǎn)換成語音并立即調(diào)用主機(jī)的語音設(shè)備進(jìn)行播報(bào)。

具體實(shí)現(xiàn)步驟如下:

第1步:實(shí)例化SqlConnecion類,打開數(shù)據(jù)連接;

第2步:用SqlConnection的實(shí)例初始化子類clsDataContext的實(shí)例;

第3步:查詢TestResult表,看有無設(shè)備運(yùn)行狀態(tài)異常記錄;

第4步:如果沒有異常記錄,則執(zhí)行最后一步;

第5步:否則,實(shí)例化SpeechSynthesizer類,即:SpeechSynthesizer synth

= new SpeechSynthesizer();

第6步:遍歷異常結(jié)果集,逐條生成報(bào)警字符串;

第7步:同時(shí),調(diào)用SpeechSynthesizer類實(shí)例的方法Speak,將生成的字符串轉(zhuǎn)換成語音并輸出到聲卡,交由聲卡播報(bào),即:synth.Speak(報(bào)警字符串);

第8步:關(guān)閉數(shù)據(jù)連接,銷毀SqlConnecion、clsDataContext和SpeechSynthesizer的實(shí)例對象。

3.4 E-Mail報(bào)警

E-Mail報(bào)警的觸發(fā)原理與語音報(bào)警一樣,只不過在觸發(fā)報(bào)警之后,系統(tǒng)除了生成報(bào)警內(nèi)容之外,還要從表EMailList取出管理人員的E-Mail地址,然后向他們發(fā)送信息。實(shí)現(xiàn)這個(gè)功能的關(guān)鍵問題是如何發(fā)送E-Mail郵件。而要實(shí)現(xiàn)發(fā)送郵件的功能,首先應(yīng)該對SMTP協(xié)議有一個(gè)了解。

SMTP是一種提供可靠且有效電子郵件傳輸?shù)膮f(xié)議。它是建立在FTP文件傳輸服務(wù)上的一種郵件服務(wù),主要用于傳輸系統(tǒng)之間的郵件信息并提供與來信有關(guān)的通知。

在.NET Framework中,SMTP協(xié)議被封裝在System.Net.Mail命名空間。

在設(shè)計(jì)中,主要用到下列幾個(gè)類:

(1)SmtpClient類,允許應(yīng)用程序使用簡單郵件傳輸協(xié)議(SMTP)來發(fā)送電子郵件;

(2)MailAddress類,表示電子郵件發(fā)件人或收件人的地址;

(3)MaiMessage類,表示可以使用SmtpClient類發(fā)送的電子郵件。

(4)Attachment類,表示電子郵件的附件。

具體實(shí)現(xiàn)方法如下:

第1步:實(shí)例化SqlConnection類,打開數(shù)據(jù)連接;

第2步:用SqlConnection的實(shí)例初始化子類clsDataContext的實(shí)例;

第3步:先查詢TestResult表,看有無設(shè)備運(yùn)行狀態(tài)異常記錄;

第4步:如有,則遍歷結(jié)果集,生成E-Mail的Body;

第5步:否則,執(zhí)行最后一步;

第6步:實(shí)例化MailAddress類,生成發(fā)件人地址,即:MailAddress aFrom = new MailAddress (from,null, Encoding.UTF8);

第7步:從數(shù)據(jù)庫取出并遍歷網(wǎng)管人員的信箱列表,循環(huán)執(zhí)行接下來的8~10步,發(fā)送報(bào)警郵件;

第8步:實(shí)例化MailAddress類,生成收件人地址,即:MailAddress aTo = new MailAddress(to,null, Encoding.UTF8);

第9步:實(shí)例化MaiMessage類,生成電子郵件,如:

MailMessage mail = new MailMessage(aFrom,aTo);

mail.Body = body;

mail.Subject = subject;

mail.BodyEncoding = Encoding.UTF8;

mail.SubjectEncoding = Encoding.UTF8;

mail.IsBodyHtml = true;

第10步:實(shí)例化SmtpClient類,設(shè)置SmtpClient類實(shí)例的各項(xiàng)參數(shù),執(zhí)行SmtpClient類實(shí)例的Send方法,將郵件發(fā)送到指定的郵箱上,如:

SmtpClient client = new SmtpClient();

client.Host = ServerName;

client.Port = Port;

client.DeliveryMethod

= SmtpDeliveryMethod.Network;

client.Credentials = new NetworkCredential

(UserName,Password);

client.Send(mail);client.Dispose();第11步:關(guān)閉數(shù)據(jù)連接,銷毀SqlConnection、clsDataContext等的實(shí)例對象。

4 UI設(shè)計(jì)

4.1 Windows服務(wù)程序的設(shè)計(jì)

Windows服務(wù)程序是在Windows操作系統(tǒng)下能完成特定功能的可執(zhí)行的應(yīng)用程序,一般沒有用戶交互界面。Windows服務(wù)程序的應(yīng)用范圍很廣,典型的Windows服務(wù)程序包含了硬件控制、應(yīng)用程序監(jiān)視、系統(tǒng)級應(yīng)用、診斷、報(bào)告、Web和文件系統(tǒng)服務(wù)等功能。

由于Windows服務(wù)程序的特點(diǎn)非常適合我們對這個(gè)應(yīng)用的要求,因此,我們將設(shè)備自動(dòng)檢測、語音報(bào)警、E-Mail報(bào)警等功能設(shè)計(jì)成獨(dú)立的Windows服務(wù)程序。根據(jù)需要部署在不同的計(jì)算機(jī)上。它們隨操作系統(tǒng)自動(dòng)啟動(dòng),自動(dòng)完成各自的任務(wù)。分工協(xié)作,互不影響。

圖3為系統(tǒng)發(fā)出的故障報(bào)警E-Mail截圖。通過分析這個(gè)E-Mail,我們立刻知道哪臺設(shè)備發(fā)生了故障。從而啟動(dòng)應(yīng)急預(yù)案,查找故障原因,修復(fù)故障設(shè)備。

圖3 系統(tǒng)發(fā)出的故障報(bào)警E-Mail截屏

4.2 Win Form應(yīng)用程序的設(shè)計(jì)

為便于系統(tǒng)維護(hù)和統(tǒng)計(jì)分析,我們設(shè)計(jì)了一個(gè)Win Form應(yīng)用程序。這個(gè)程序除集成設(shè)備自動(dòng)檢測、語音報(bào)警、E-Mail報(bào)警外,我們還增加了設(shè)備信息維護(hù)、網(wǎng)管人員(E-Mail信箱)維護(hù)、維護(hù)結(jié)果查詢與分析(追溯故障發(fā)生時(shí)間及具體設(shè)備)等模塊。圖4為網(wǎng)絡(luò)測試日志查詢實(shí)際運(yùn)行截圖。從此圖提供的信息,我們就可以追溯設(shè)備發(fā)生故障的具體時(shí)間,查出類似前文提到的案例的故障原因。

5 結(jié)語

如果合理安排檢測頻次和所發(fā)數(shù)據(jù)報(bào)的大小,就不會(huì)對網(wǎng)絡(luò)形成ICMP攻擊。理由是我們所發(fā)的數(shù)據(jù)報(bào)不大于32 kb,且所發(fā)消息類型為Reply(0)。而防火墻一般都會(huì)對出站的ICMP Echo Request、出站的ICMP Source Quench、進(jìn)站的TTL Exceeded和進(jìn)站的ICMP Destination Unreachable放行。這就是說我們通過這個(gè)方法得到的結(jié)果,能反映被測試主機(jī)的在線狀態(tài)。因此,完全可以認(rèn)為,上述檢測方法是安全可靠的。

此程序的成功開發(fā)與上線應(yīng)用為浦煤網(wǎng)管人員開辟了一條實(shí)時(shí)掌控公司網(wǎng)絡(luò)設(shè)備運(yùn)行狀態(tài)的路徑,而且當(dāng)網(wǎng)絡(luò)發(fā)生故障時(shí),它所提供的信息能夠幫助網(wǎng)管人員快速定位故障點(diǎn),快速查找故障原因,進(jìn)而快速修復(fù)故障設(shè)備,工作效率顯著提高。

目前,我們的程序功能比較單一,界面比較簡陋,有許多需要改進(jìn)的地方。比如,如果增加短信報(bào)警功能,效果可能會(huì)更好。這些都有待于我們在今后的實(shí)踐中逐步完善。

Introduction of Network Detection and Alarm Program

Shanghai Pudong Gas Manufacturing Co., Ltd. Feng Deqiang

This paper describes the design objective, principle and implementation method of network detection and alarm program of Pudong Gas Manufacturing Company, and puts forward the solution as well.

network detection, alarm program, program design

猜你喜歡
網(wǎng)管網(wǎng)絡(luò)設(shè)備實(shí)例
一種基于C# 的網(wǎng)絡(luò)設(shè)備自動(dòng)化登錄工具的研制
數(shù)據(jù)中心唯“快”不破
“五制配套”加強(qiáng)網(wǎng)管
新聞前哨(2015年2期)2015-03-11 19:29:29
完形填空Ⅱ
完形填空Ⅰ
一種供鳥有限飛翔的裝置
發(fā)射機(jī)房網(wǎng)管系統(tǒng)的設(shè)計(jì)原則及功能
河南科技(2014年14期)2014-02-27 14:11:59
基于列車監(jiān)測網(wǎng)絡(luò)設(shè)備的射頻功放模塊設(shè)計(jì)
基于三層交換技術(shù)架構(gòu)數(shù)字化校園網(wǎng)絡(luò)設(shè)備的配置與管理
網(wǎng)管支撐系統(tǒng)運(yùn)行質(zhì)量管控的研究與實(shí)現(xiàn)
宁化县| 梧州市| 宁晋县| 滦南县| 宁化县| 泽州县| 商城县| 绵竹市| 甘谷县| 锡林郭勒盟| 陵川县| 克东县| 九江县| 大邑县| 宁陕县| 若尔盖县| 镇雄县| 高雄县| 门头沟区| 岫岩| 年辖:市辖区| 博乐市| 望谟县| 龙山县| 于都县| 桃园市| 开江县| 正定县| 阳东县| 海兴县| 古丈县| 任丘市| 潜江市| 道孚县| 连南| 宁波市| 鹤壁市| 吴川市| 普陀区| 阜宁县| 和顺县|