• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于組播的圖像共享軟件設(shè)計(jì)

      2020-08-20 08:56:26成世漢
      山西電子技術(shù) 2020年4期
      關(guān)鍵詞:圖像文件服務(wù)器端線程

      成世漢

      (山西大眾電子信息產(chǎn)業(yè)集團(tuán)有限公司,山西 太原 030024)

      0 引言

      組播傳輸已經(jīng)服務(wù)于醫(yī)療、網(wǎng)絡(luò)教育以及視頻會(huì)議等領(lǐng)域,隨著支持組播傳輸?shù)穆酚善?、交換機(jī)和集線器等網(wǎng)絡(luò)設(shè)備的發(fā)展將使組播技術(shù)得到進(jìn)一步完善和推廣。相較于單播傳輸面對(duì)多接收方時(shí)網(wǎng)絡(luò)延時(shí)大、阻塞嚴(yán)重的情況,組播僅需要單次發(fā)送數(shù)據(jù)包,只有加入組播地址的接收方會(huì)接收到數(shù)據(jù),網(wǎng)絡(luò)傳輸效率顯著提高,同時(shí)規(guī)避了廣播傳輸浪費(fèi)網(wǎng)絡(luò)帶寬的情況。本軟件采用C/S模型,服務(wù)器端對(duì)圖像進(jìn)行分包后發(fā)送至組播地址,客戶端將本地IP加入組播,接收數(shù)據(jù)幀并完成組包后顯示圖像。下面將對(duì)軟件設(shè)計(jì)進(jìn)行具體介紹。

      1 設(shè)計(jì)思路

      本軟件提供服務(wù)器端和客戶端,發(fā)送方為服務(wù)器端,接收方為客戶端,設(shè)計(jì)思路如圖1所示。

      圖1 圖像共享設(shè)計(jì)思路

      具體設(shè)計(jì)思路如下:

      1) 服務(wù)器端設(shè)置組播地址和端口,客戶端將本地IP加入該組播地址;

      2) 服務(wù)器端獲取圖像文件的名稱和大小,計(jì)算發(fā)送幀數(shù)量;

      3) 服務(wù)器端向組播地址發(fā)送圖像文件的名稱、大小以及發(fā)送幀數(shù)量信息,發(fā)送幀格式如圖2所示;

      圖2 發(fā)送幀格式

      4) 客戶端接收并解析接收到的圖像文件名稱、大小以及發(fā)送幀數(shù)量信息;

      5) 客戶端根據(jù)圖像文件的大小創(chuàng)建緩存文件;

      6) 服務(wù)器端根據(jù)發(fā)送幀數(shù)對(duì)圖像文件進(jìn)行分包,將數(shù)據(jù)幀依次發(fā)送至組播地址;

      7) 客戶端接收并存儲(chǔ)接收到的數(shù)據(jù)幀,通過接收線程處理數(shù)據(jù),當(dāng)接收幀數(shù)量與接收到的發(fā)送幀數(shù)量信息相等時(shí)關(guān)閉存儲(chǔ)文件,將數(shù)據(jù)轉(zhuǎn)換為圖像進(jìn)行顯示;

      8) 客戶端清除圖像緩存。

      2 軟件設(shè)計(jì)

      2.1 服務(wù)器端設(shè)計(jì)

      服務(wù)器端主要由CServerDlg、CMulticastAdmin和CSendPictureThread三個(gè)類組成。CServerDlg為服務(wù)器端的對(duì)話框類,可對(duì)組播IP和端口以及圖像索取路徑進(jìn)行設(shè)置,同時(shí)具備圖像顯示功能。服務(wù)器端界面如圖3所示。CMulticastAdmin為組播類,通過使用2.2版本的WinSock DLL初始化Socket函數(shù)庫(kù)。CServerDlg通過調(diào)用CMulticastAdmin中部分函數(shù)實(shí)現(xiàn)組播的創(chuàng)建、發(fā)送和銷毀。CSendPictureThread是為適應(yīng)高分辨率圖像數(shù)據(jù)量大而設(shè)計(jì)的發(fā)送線程。CServerDlg調(diào)用CSendPictureThread完成數(shù)據(jù)的發(fā)送。

      圖3 服務(wù)器端界面顯示

      CServerDlg、CMulticastAdmin和CSendPictureThread三個(gè)類的調(diào)用關(guān)系見圖4。

      圖4 服務(wù)器端類調(diào)用關(guān)系圖

      由于高分辨率圖像占用空間較大,常規(guī)數(shù)據(jù)幀無(wú)法通過單次發(fā)送完成圖像傳輸,所以需要通過分包的方式通過多次發(fā)送完成數(shù)據(jù)傳輸。分包實(shí)現(xiàn)代碼如下:

      ULONG nCount=UFlieLength/ONEFRAMELENGH+1;//計(jì)算發(fā)送幀數(shù)量

      if (UFlieLength/ONEFRAMELENGH%1024==0)

      {

      --nCount;

      }

      char*pDataBuffer;

      pDataBuffer=new char[ONEFRAMELENGH];//分配數(shù)據(jù)幀空間

      ZeroMemory(pDataBuffer,ONEFRAMELENGH);

      for(ULONGi=0;i

      {

      File.Seek(i*ONEFRAMELENGH,CFile::begin);

      UINT nBufferLength=File.Read(pDataBuffer,ONEFRAMELENGH);//獲取圖像數(shù)據(jù)

      STU_FRAME CurDataFrame;

      ZeroMemory(&CurDataFrame,sizeof(STU_FRAME));

      CurDataFrame.nFrameLength=nBufferLength;

      memcpy(&CurDataFrame.chFrame,pDataBuffer,nBufferLength);//給發(fā)送幀賦值

      AddFrametoList(CurDataFrame);//將發(fā)送幀加入發(fā)送列表由發(fā)送線程發(fā)送至組播地址

      }

      2.2 客戶端設(shè)計(jì)

      客戶端由CClientDlg、CMulticastAdmin和CRcvPictureThread三個(gè)類組成。CClientDlg為客戶端的對(duì)話框類,可對(duì)組播IP和端口以及圖像緩存路徑進(jìn)行設(shè)置。客戶端界面如圖5所示。CMulticastAdmin為與服務(wù)器端相同的組播類。CClientDlg通過調(diào)用CMulticastAdmin中部分函數(shù)實(shí)現(xiàn)本地IP加入組播地址以及組播數(shù)據(jù)接收線程的啟動(dòng)和停止。CRcvPictureThread是處理組播數(shù)據(jù)的線程,該線程主要處理兩類數(shù)據(jù),一類為圖像的基本信息,另一類為圖像的數(shù)據(jù)信息,為確保在先接收到圖像的基本信息,本軟件初始化雙組播地址確保圖像基本信息擁有優(yōu)先被處理能力。CClientDlg調(diào)用CRcvPictureThread完成數(shù)據(jù)的緩存和圖像顯示??蛻舳思嫒輬D像灰度圖轉(zhuǎn)換、圖像另存、格式轉(zhuǎn)換和分辨率調(diào)節(jié)等功能,可滿足基本圖像處理要求。

      圖5 客戶端界面顯示

      CClientDlg、CMulticastAdmin和CRcvPictureThread三個(gè)類的調(diào)用關(guān)系與服務(wù)器端類調(diào)用關(guān)系類似??蛻舳嗽谑褂媒M播技術(shù)接收數(shù)據(jù)前需要將本地IP加入組播地址,本軟件自動(dòng)獲取本地IP,調(diào)用CMulticastAdmin中的void SetLocalIP(CString strIP)和BOOL CreateReceiver(void)函數(shù)完成本地IP加入。實(shí)現(xiàn)代碼如下:

      CString strIP;

      char strHostName[100]={0};

      if(SOCKET_ERROR!=gethostname(strHostName,sizeof(strHostName)))//獲取計(jì)算機(jī)全名

      {

      hostent*Localhp;

      Localhp=gethostbyname(strHostName);//通過計(jì)算機(jī)全名獲取主機(jī)信息

      if(Localhp!=NULL&&Localhp->h_addr!=NULL)

      {

      strIP=inet_ntoa(*(struct in_addr*)hp->h_addr);//得到本地IP

      theApp.m_pMulticast->SetLocalIP(strIP);//將本地IP加入組播地址中

      }

      }

      BOOL bRtn=theApp.m_pMulticast->CreateReceiver();//創(chuàng)建組播接收線程

      2.3 類CMulticastAdmin的設(shè)計(jì)

      本軟件實(shí)現(xiàn)組播傳輸主要依靠組播類CMulticastAdmin。CMulticastAdmin為服務(wù)器端提供了組播IP和組播端口設(shè)置函數(shù)、組播創(chuàng)建和銷毀函數(shù)以及數(shù)據(jù)發(fā)送函數(shù),為客戶端提供了本地IP加入組播函數(shù)、啟動(dòng)和停止接收線程函數(shù)以及銷毀組播函數(shù),CMulticastAdmin結(jié)構(gòu)設(shè)計(jì)見圖6。通過組播類的調(diào)用,既達(dá)到了多用戶圖像共享的目的,也有效降低了網(wǎng)絡(luò)負(fù)載,可謂一舉兩得。

      3 相關(guān)知識(shí)

      使用組播傳輸時(shí),需要使用通信雙方認(rèn)知的D類地址作為廣播地址發(fā)送向目的端口。D類地址范圍為224.0.0.0—239.255.255.255,其中224.0.0.0—224.0.0.255為預(yù)留組播地址(永久組地址),用戶不可使用;224.0.1.0—238.255.255.255為用戶可用組播地址,本軟件采用238.8.8.8作為默認(rèn)組播地址,用戶也可根據(jù)實(shí)際情況設(shè)置符合路由協(xié)議的組播地址;239.0.0.0—239.255.255.255屬于本地管理組播地址,僅在特定范圍有效。在傳輸過程中使用的路由器、集線器、交換機(jī)和防火墻等設(shè)備需要具備組播傳輸模式,尤其在跨網(wǎng)段傳輸過程中必須打開三層交換機(jī)的組播路由協(xié)議(通常為PIM稀疏模式),有時(shí)還需設(shè)置TTL(Time To Live),避免數(shù)據(jù)幀在網(wǎng)絡(luò)中循環(huán)收發(fā)。相信隨著科技水平的不斷進(jìn)步,組播傳輸應(yīng)用更加廣泛,組播模式必將成為網(wǎng)絡(luò)傳輸設(shè)備中的必備模式。

      圖6 CMulticastAdmin類圖

      4 結(jié)束語(yǔ)

      本軟件通過組播傳輸方式實(shí)現(xiàn)了高分辨率圖像的一對(duì)多共享,其實(shí)不光是圖像共享,任何信息都可通過組播方式實(shí)現(xiàn)共享,尤其是大容量信息共享時(shí)更能體現(xiàn)出組播傳輸?shù)膬?yōu)越性能。同時(shí)在保證互聯(lián)互通的基礎(chǔ)上,任意終端方均可創(chuàng)建組播成為服務(wù)器端,客戶端只需以訂閱的形式加入組播地址便可完成資源共享,這種有效降低網(wǎng)絡(luò)負(fù)載、應(yīng)用靈活的網(wǎng)絡(luò)傳輸方式不僅僅服務(wù)于醫(yī)療、網(wǎng)絡(luò)教育以及視頻會(huì)議領(lǐng)域,還會(huì)對(duì)工業(yè)生產(chǎn)產(chǎn)生重大影響。

      猜你喜歡
      圖像文件服務(wù)器端線程
      淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
      成功(2018年10期)2018-03-26 02:56:14
      淺談linux多線程協(xié)作
      圖像電子文件的歸檔格式及其轉(zhuǎn)換研究
      檔案管理(2017年1期)2017-01-17 19:15:57
      在Windows中安裝OpenVPN
      Linux線程實(shí)現(xiàn)技術(shù)研究
      網(wǎng)頁(yè)防篡改中分布式文件同步復(fù)制系統(tǒng)
      在TC界面以縮略圖查看圖像文件
      電腦迷(2012年22期)2012-04-29 20:30:54
      么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
      《圖像文件探尋之旅——圖像文件概述》教學(xué)設(shè)計(jì)及反思
      圖像文件壓縮算法淺析
      法库县| 高青县| 太和县| 卓尼县| 南阳市| 通许县| 公主岭市| 德惠市| 江津市| 区。| 高州市| 威远县| 烟台市| 保康县| 财经| 昌吉市| 湖口县| 东乡族自治县| 偏关县| 青冈县| 特克斯县| 大理市| 来凤县| 荣昌县| 林州市| 天门市| 元谋县| 万盛区| 罗甸县| 盱眙县| 蓝山县| 阿克| 观塘区| 清苑县| 鹰潭市| 民乐县| 灵石县| 浦城县| 金寨县| 公主岭市| 南江县|