韋明萬 龐懷釗
(1.廣西廣播電視無線傳播樞紐臺(tái);2.廣西廣播電視技術(shù)中心南寧分中心)
隨著廣播電視業(yè)務(wù)的擴(kuò)大,如今無線覆蓋發(fā)射臺(tái)站的網(wǎng)絡(luò)設(shè)備隨之增多,遠(yuǎn)程調(diào)試配置設(shè)備成為不可或缺的重要工作環(huán)節(jié)。但上級(jí)遠(yuǎn)程監(jiān)控系統(tǒng)訪問臺(tái)站局域網(wǎng)設(shè)備時(shí),常常因受到局域網(wǎng)路由器的限制而不能直接通過IP、端口進(jìn)行訪問,而是先需要進(jìn)行IP、端口映射操作后方可遠(yuǎn)程訪問,給遠(yuǎn)程維護(hù)工作帶來諸多不便,影響維護(hù)工作的快速開展。為此而設(shè)計(jì)了此代理軟件,用以簡(jiǎn)化路由映射功能,實(shí)現(xiàn)UDP、TCP數(shù)據(jù)報(bào)文的代理、轉(zhuǎn)發(fā)和實(shí)時(shí)監(jiān)控設(shè)備在線情況等,最終提高工作效率。
本軟件可實(shí)現(xiàn)路由映射功能和UDP、TCP數(shù)據(jù)包的代理、轉(zhuǎn)發(fā)。軟件運(yùn)行穩(wěn)定無異常,數(shù)據(jù)傳輸安全可靠,功能便捷、配置簡(jiǎn)單,代碼易維護(hù)。
1.開發(fā)平臺(tái):Microsoft Visual Studio 2019
2.開發(fā)語言:C#、XML
目前使用路由器作為網(wǎng)絡(luò)出口設(shè)備的臺(tái)站要進(jìn)行站內(nèi)設(shè)備調(diào)試時(shí)主要方式有:
1. 遠(yuǎn)端使用telnet命令進(jìn)入路由器,映射網(wǎng)絡(luò)站內(nèi)設(shè)備的IP、端口進(jìn)行搭建通信網(wǎng)絡(luò)鏈路;
2. 現(xiàn)場(chǎng)人工接入網(wǎng)線到網(wǎng)絡(luò)設(shè)備,如發(fā)射機(jī)、碼流分析儀、音視頻服務(wù)器等。
以上兩種方式,均不太理想,在網(wǎng)絡(luò)條件允許的情況下,為盡可能的實(shí)現(xiàn)維護(hù)的簡(jiǎn)單而設(shè)計(jì)了此軟件??蛻舳艘L問設(shè)備時(shí),先將欲訪問設(shè)備站內(nèi)的IP及端口提供給運(yùn)行于工控計(jì)算機(jī)上的代理轉(zhuǎn)發(fā)服務(wù)軟件,再由代理轉(zhuǎn)發(fā)軟件間接與設(shè)備建立好通訊鏈路,作為客戶端與設(shè)備間的通信中轉(zhuǎn),其過程用戶看不見,摸不著,形成了訪問的虛擬直達(dá)。之后客戶端與設(shè)備通訊均先經(jīng)過代理服務(wù)軟件進(jìn)行雙向數(shù)據(jù)轉(zhuǎn)發(fā),即用戶只看到訪問和回復(fù)。拓?fù)淙鐖D1所示。
圖1 網(wǎng)絡(luò)拓?fù)鋱D
代理軟件分為客戶端和服務(wù)端,臺(tái)站電腦需運(yùn)行服務(wù)端程序并開啟監(jiān)聽功能,隨時(shí)等待來自客戶端的TCP/UDP會(huì)話請(qǐng)求。軟件均采用C#+WinForm窗體設(shè)計(jì),并運(yùn)行于C/S模式。設(shè)計(jì)過程使用模塊化、分功能、分層次類庫(kù)設(shè)計(jì),實(shí)現(xiàn)低耦合,高維護(hù)。為適應(yīng)臺(tái)站場(chǎng)景需要,服務(wù)端程序還增加了定期掃描網(wǎng)絡(luò)設(shè)備增減、在線、離線等情況,有助于臺(tái)站維護(hù)人員快速查找與解決設(shè)備通信故障問題,結(jié)果使用SQL Server進(jìn)行數(shù)據(jù)存儲(chǔ),以供日后查詢。
客戶端:初始化訪問目標(biāo)設(shè)備的IP、端口并向服務(wù)端發(fā)起會(huì)話請(qǐng)求,另外與服務(wù)器同步數(shù)據(jù),實(shí)時(shí)顯示來自服務(wù)器主動(dòng)報(bào)送的發(fā)射機(jī)、電源復(fù)位器、切換器等網(wǎng)絡(luò)設(shè)備的通信狀態(tài)。
服務(wù)端:監(jiān)聽來自客戶端的會(huì)話請(qǐng)求,從通信消息中提取目標(biāo)設(shè)備的IP和端口,快速建立起虛擬直達(dá)設(shè)備的鏈路供客戶訪問。另外定期掃描臺(tái)站的各種網(wǎng)絡(luò)設(shè)備,把在線,離線、發(fā)現(xiàn)新設(shè)備等情況發(fā)送給已經(jīng)建立起連接通道的客戶端。其最大的作用就是消息的接收、轉(zhuǎn)發(fā),猶如快遞服務(wù)站。
圖2 軟件服務(wù)端流程圖
代理流程如圖2所示,首先代理服務(wù)端收到客戶端訪問設(shè)備請(qǐng)求后將數(shù)據(jù)包轉(zhuǎn)發(fā)給設(shè)備,若不是則結(jié)束會(huì)話;一定時(shí)間內(nèi)若設(shè)備不響應(yīng)則會(huì)話結(jié)束;若設(shè)備響應(yīng)則代理服務(wù)端將數(shù)據(jù)包發(fā)給客戶端;客戶端再次請(qǐng)求時(shí)重復(fù)循環(huán),若不再請(qǐng)求,則結(jié)束會(huì)話。
類似海康威視上位機(jī)請(qǐng)求畫面的時(shí)候,由于數(shù)據(jù)訪問頻繁,容易導(dǎo)致轉(zhuǎn)發(fā)處理能力差、畫面延遲、界面卡死等異常;為解決這些問題,軟件采用工廠模式設(shè)計(jì)來提供接口調(diào)用,同時(shí)還引入了多線程的概念。主要應(yīng)用開發(fā)環(huán)境提供的多線程組件,即用BackGroundWorker組件執(zhí)行后臺(tái)線程異步操作。其能完美解決前后臺(tái)數(shù)據(jù)交互,同時(shí)還能減少數(shù)據(jù)包的堆積和數(shù)據(jù)延遲問題,最終提高轉(zhuǎn)發(fā)處理能力。
應(yīng)用結(jié)果如圖3所示,因網(wǎng)絡(luò)路由不允許直接訪問內(nèi)部8000端口,僅開通9900端口出入站,此時(shí)海康威視上位機(jī)想直接遠(yuǎn)程訪問臺(tái)站硬盤錄相機(jī)時(shí),無法建立連接。這種情況下,客戶端只需要提前將硬盤錄相機(jī)的IP:192.168.1.X和端口:8000一起發(fā)給服務(wù)端,服務(wù)端收到后立即構(gòu)建通訊鏈路,并開啟代理功能,此時(shí)??低暽衔粰C(jī)就可以通過對(duì)外IP和9900端口間接訪問到數(shù)據(jù)。經(jīng)過多個(gè)場(chǎng)景應(yīng)用及長(zhǎng)時(shí)間測(cè)試,目前運(yùn)行穩(wěn)定,使用靈活、配置簡(jiǎn)單。
圖3 上位機(jī)訪問實(shí)時(shí)畫面
本程序代理功能需要客戶端與服務(wù)端配合使用,無需在路由器上映射大量?jī)?nèi)部設(shè)備端口即可實(shí)現(xiàn)在站外網(wǎng)絡(luò)訪問站內(nèi)設(shè)備,還可以實(shí)時(shí)掌握設(shè)備在線、離線等情況,為維護(hù)人員識(shí)別設(shè)備通信故障提供幫助。軟件輕小、免安裝,即用即運(yùn)行,操作簡(jiǎn)單方便,一定程度上提高了安全播出維護(hù)工作的效率。