<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 無線VoIP系統(tǒng)IP通話功能實現(xiàn)

          無線VoIP系統(tǒng)IP通話功能實現(xiàn)

          作者: 時間:2012-03-01 來源:網(wǎng)絡(luò) 收藏
          體, arial; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; PADDING-TOP: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BACKGROUND-COLOR: rgb(255,255,255); orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">

            (1)雙方分別建立socket,調(diào)用socket函數(shù):

            s=socket(PF_INET,SOCK_DGRAM,0)

            SOCK_DGRAM表示套接字類型為數(shù)據(jù)報套接字,即采用UDP協(xié)議進行通信。

            (2)綁定已設(shè)置好的自己的地址和端口信息,調(diào)用bind函數(shù):

            bind(s,(struct sockaddr*)my_addr,sizeof(structsockaddr))

            (3)將select函數(shù)置于阻塞狀態(tài),直到監(jiān)視文件描述符集合rfds中某個文件描述符發(fā)生變化為止:

            select(pCtrl->rwd+1,rfds,IFX_NULL,IFX_NULL,NULL)

            (4)數(shù)據(jù)傳輸:sendto()和recvfrom()用于在無連接的數(shù)據(jù)報socket方式下進行數(shù)據(jù)傳輸。由于本地socket并沒有與遠(yuǎn)端機器建立連接,所以在發(fā)送數(shù)據(jù)時應(yīng)指明目的地址。如圖6所示,A作為發(fā)送方,通過其套接字用函數(shù)sendto()將其服務(wù)請求數(shù)據(jù)發(fā)送到接收方B的指定端口,B通過其套接字用函數(shù)recvfrom()接收數(shù)據(jù),處理好服務(wù)請求后又將服務(wù)應(yīng)答發(fā)回A,此時A便成了接收方,A接收應(yīng)答后還可繼續(xù)發(fā)送數(shù)據(jù)給B。

          2.2 廣播通訊的實現(xiàn)

            廣播和多播都用于實現(xiàn)向多個接收者發(fā)送UDP數(shù)據(jù)報,但是廣播不像多播那樣在接收端有復(fù)雜的控制過程,因而實現(xiàn)比多播簡單的多。以下廣播通訊的實現(xiàn)均在點對點通訊的基礎(chǔ)上實現(xiàn)的。

            在發(fā)送方,只需要設(shè)置套接字socket的選項為允許發(fā)送廣播,然后在發(fā)送時指定目的IP為廣播地址即可。具體地,允許socket廣播通過setsockopt函數(shù)設(shè)置廣播選項來實現(xiàn),當(dāng)setsockopt參數(shù)optname為SO_BROADCAST時,表示打開或禁止從該socket廣播,當(dāng)參數(shù)optval為1時允許廣播,為0時禁止廣播。

            系統(tǒng)編程實現(xiàn)廣播的部分源碼為:

            int bBroadcast=1:

            setsockopt(pCtrl-->nAdminSocket,SOL_SOCKET,SO_BROADCAST,bBroadcast,sizeof(bBroadcast));

            setsockopt(pConn-->nUsedSocket,SOL_SOCKET,SO_BROADCAST,bBroadcast,sizeof(bBroadcast));

            tO_addr.sin_addr.s_addr=inet_addr(WIRLESS_IP_BROADCAST);

            /*WIRLESS_IP_BROADCAST為廣播地址,其值是將網(wǎng)絡(luò)接口(本系統(tǒng)為ath0)IP地址的主機ID部分設(shè)置為全1,網(wǎng)絡(luò)ID部分不變而得到*/



          關(guān)鍵詞: 無線 VoIP系統(tǒng) IP通話 功能

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();