freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

畢業(yè)設計-jmf語音視頻聊天軟件的實現(xiàn)-資料下載頁

2024-12-02 21:20本頁面

【導讀】要在網(wǎng)絡上進行語音視頻通信,便要解決音、視頻信號的采集、回放、編解碼以及數(shù)據(jù)的傳輸?shù)膯栴}。JMF是Java的一種可選用的應用編程接口軟件包,它為音頻和。JMF用RTP協(xié)議傳輸實時媒體信號。RTP是針對Inter上多媒體。RTP能在一對一或一對多的傳輸情況下工作,其目的是提供時間信息和實現(xiàn)流同步。制,它依靠RTCP提供這些服務。組”的通訊模式。加入了同一個組的主機可以接收到此組內的所有數(shù)據(jù),網(wǎng)絡中的交換機和路由器只向有需求者復制并轉發(fā)其所需數(shù)據(jù)。能有效地節(jié)省網(wǎng)絡和主機的資源,并且它允許在廣域網(wǎng)上傳輸。由于NAT的存在,令許多P2P應用無法應用于NAT背后的主機,根據(jù)NAT的原理,能用UDP打孔技術進行NAT. 成了對NAT的穿透,使該軟件能在廣域網(wǎng)上使用。

  

【正文】 r 224。 C l i e n t圖 54 NAPT 的地址及端口轉換過程 私有網(wǎng)絡中某一主機 Client A( ),它的某個進程通過 1234端口,想訪問外網(wǎng)服務器 的 1235 端口。那么當數(shù)據(jù)包通過NAT時,這個 NAT的外網(wǎng)地址是 ,首先 NAT會改變這個數(shù)據(jù)包的原 IP 地址,改為 。并分配一個端口(如 62021)給Client A ,把數(shù)據(jù)包的原端口號改為 62021 。所以本來是( :1234:1235)的數(shù)據(jù)包到了互聯(lián)網(wǎng)上變?yōu)榱耍?:62021:1235),如圖 54左圖所示。 NAT會記住 62021 端口對應的是 的 1234 端口,以后從外網(wǎng)服務器 62021端口的數(shù)據(jù)會被 NAT自動的改變目的 IP和端口號,然后轉發(fā)到 (如圖 54右圖所示)。 第五章 穿透 NAT 31 錐型 NAT 與對稱型 NAT S e s s i o n 1 ( A S 1 )1 8 . 1 8 1 . 0 . 3 1 : 1 2 3 51 5 5 . 9 9 . 2 5 . 1 1 : 6 2 0 0 0 S e s s i o n 2 ( A S 2 )1 3 8 . 7 6 . 2 9 . 7 : 1 2 3 51 5 5 . 9 9 . 2 5 . 1 1 : 6 2 0 0 0C o n e N A T1 5 5 . 9 9 . 2 5 . 1 1S e s s i o n 1 ( A S 1 )1 8 . 1 8 1 . 0 . 3 1 : 1 2 3 51 0 . 0 . 0 . 1 : 1 2 3 4S e s s i o n 2 ( A S 2 )1 3 8 . 7 6 . 2 9 . 7 : 1 2 3 51 0 . 0 . 0 . 1 : 1 2 3 4 S e r v e r S 1 1 8 . 1 8 1 . 0 . 3 1 : 1 2 3 5S e r v e r S 21 3 8 . 7 6 . 2 9 . 7 : 1 2 3 5C l i e n t A1 0 . 0 . 0 . 1 : 1 2 3 4S e s s i o n 1 ( A S 1 )1 8 . 1 8 1 . 0 . 3 1 : 1 2 3 51 5 5 . 9 9 . 2 5 . 1 1 : 6 2 0 0 0 S e s s i o n 2 ( A S 2 )1 3 8 . 7 6 . 2 9 . 7 : 1 2 3 51 5 5 . 9 9 . 2 5 . 1 1 : 6 2 0 0 1S y m m e t r i c N A T1 5 5 . 9 9 . 2 5 . 1 1S e s s i o n 1 ( A S 1 )1 8 . 1 8 1 . 0 . 3 1 : 1 2 3 51 0 . 0 . 0 . 1 : 1 2 3 4S e s s i o n 2 ( A S 2 )1 3 8 . 7 6 . 2 9 . 7 : 1 2 3 51 0 . 0 . 0 . 1 : 1 2 3 4 S e r v e r S 1 1 8 . 1 8 1 . 0 . 3 1 : 1 2 3 5S e r v e r S 21 3 8 . 7 6 . 2 9 . 7 : 1 2 3 5C l i e n t A1 0 . 0 . 0 . 1 : 1 2 3 4圖 55 Cone NAT 與 Symmetric NAT 的區(qū)別 NAPT又分為錐型( Cone)和對稱型( Symmetric),如圖 55所示,它們的區(qū)別在于,在 NAT已分配端口號給 Client A的情況下,如果 Client A 繼續(xù)用 1235 端口與另一外網(wǎng)服務器通訊,錐型 NAT 還會繼續(xù)用原來62021 端口,即所分配的端口號不變。而對于對等型 NAT, NAT 將會分配另一端口號(如 62021)給 Client A 的 1235端口。也就是說,同一內網(wǎng)主機同一端口號,對于錐型 NAT,無論與哪一外網(wǎng)主機通訊,都不改變所分配的端口號;而對于對等型 NAT,同一內網(wǎng)主機同一端口號,每一次與不同 的外網(wǎng)主機通訊,就重新分配另一個端口號。 完全錐型 NAT、受限制錐型 NAT 與端口受限制型 NAT 錐型 NAT 可另外分類為完全錐形( Full Cone) NAT,受限制錐形第五章 穿透 NAT 32 ( Restricted Cone) NAT,端口受限制錐形( Port Restricted Cone) NAT。 ① 完全錐形( Full Cone) NAT 這種 NAT 內部的主機 A 連接過外網(wǎng)主機 C 后, NAT 會打開一個端口。然后外網(wǎng)的任何發(fā)到這個打開的端口的 UDP 數(shù)據(jù)報都可以到達 A,不管是不是 C發(fā)過來的 [12]。 例如 A: NAT: C: A(:5000) NAT(:8000) C(:2021) 任何發(fā)送到 NAT(:8000) 的 數(shù) 據(jù) 都 可 以 到 達A(:5000)。 ② 受限制錐形( Restricted Cone) NAT 這種 NAT 內部的主機 A 連接過外網(wǎng)的主機 C 后, NAT 打開一個端口。然后 C可以用任何端口和 A通信 ,但其他的外網(wǎng)主機不可以。 例如 A: NAT: C: A(:5000) NAT(:8000) C(:2021) 任何從 C 發(fā)送到 NAT(:8000)的數(shù)據(jù)都可以到達A(:5000)。 ③ 端口受限制錐形( Port Restricted Cone) NAT 這種 NAT 內部的主機 A 連接過外網(wǎng)的主機 C 后, NAT 打開一個端口。然后 C只能用原來的端口和 A通信,其他的外網(wǎng)主機不可以。 例如 A: NAT: C: A(:5000) NAT(:8000) C(:2021) 第五章 穿透 NAT 33 只有 C(:2021)發(fā)送到 NAT(:8000)的數(shù)據(jù)都可以到達 A(:5000)。 NAT 產生的問題 NAT很好地解決了地址緊缺的問題,屏蔽了內部網(wǎng)絡,但也帶來一些問題。內網(wǎng)的主機向外連接是很容易的( NAT 相當于透明的,內網(wǎng)的和外網(wǎng)的主機均不用知道 NAT的情況)。但如果外部的計算機想訪問子網(wǎng)內的計算機就比較困難了,這可以使內網(wǎng)主機先發(fā)起連接從而解決問題。但是如果兩臺主機都分別位于兩不同 NAT 后面時,兩臺主機 無法通信。當分別位于兩不同 NAT( NAT A, NAT B)后面的兩臺主機 A和 B欲進行通訊時,若主機 B 主動發(fā)起連接,它該連哪個地址呢?第一種情況:試圖直接連到 主機 A的內網(wǎng)私有地址( :1234)肯定會失敗,因為 IP 地址;第二種情況,試圖直接連到 B的 NAT公有地址( :62021), NAT A會拒絕這個數(shù)據(jù)包,因為這個端口并無綁定內網(wǎng)主機的某個端口,或即使有所綁定,但這個端口所綁定的外網(wǎng)地址和端口并不是 B 的地址和端口。若 A 主動連接 B,結果一樣。 有兩種方法解決這個問題。方法一:通過服務器,服務器作為中間人,轉發(fā)主機間的數(shù)據(jù)。但若用戶數(shù)量到達一定數(shù)目時,這方法浪費帶寬且給服務器帶來很 大壓力,所以方法不可行。方法二,還是通過服務器,但服務器只充當 “介紹人 ”,不轉發(fā)主機間的數(shù)據(jù),具體請看下面的 “UDP打 孔 技術 ” ( UDP hole punching)。 穿透 NAT—— UDP 打 孔 技術 所謂的 “打 孔 技術 ”,就是在內網(wǎng)的 NAT設備上打上一個 “孔 ”(也就是在 NAT上建立一個會話,綁定地址和端口號),這個 孔 不能由外部來打,第五章 穿透 NAT 34 只能由內網(wǎng)內的主機來打。而且這個 孔 可能是有方向的,比如從內部某臺主機(比如: )向外部的某個 IP(比如: )發(fā)送一個 UDP包, 那么就在這個內網(wǎng)的 NAT設備上打了一個方向為 的 “孔 ”,以后 就可以通過這個 孔 與內網(wǎng)的 聯(lián)系了 [13]。 下面就根據(jù) NAT的各種類型詳細解析如何 “打 孔 ”,如何穿透 NAT。 1.完全錐形( Full Cone) NAT 處于不同內網(wǎng)的主機 A 和主機 B,各自先連接服務器,從而在各自NAT設備上打開了一個 “孔 ”,服務器收到主機 A和主機 B的連接后,知道 A 與 B 的公網(wǎng)地址和 NAT 分配給它們的端口號,然后把這些 NAT 地址與端口號告訴 A與 B,由于在完全錐形 NAT的特點, A和 B給服務器所打開的 “孔 ”,能給別的任何的主機使用。故 A 與 B 可連接對方的公網(wǎng)地址和端口直接進行通信。服務器在這里充當 “介紹人 ”,告訴 A 與 B 對方的地址和端口號。 2.受限制錐形( Restricted Cone) NAT A和 B還是要先連接服務器,服務器發(fā)送 A和 B的地址和端口信息給 A和 B,但由于受限制錐形 NAT的特點,他們所打開的 “孔 ”,只能與服務器通信。要使他們可以直接通信,解決辦法如下: 假如主機 A 開始發(fā)送一個 UDP 信息到主機 B 的公網(wǎng)地址上,與此同時,它又通過服務器中轉發(fā)送了一個邀請信息給主機 B,請 求主機 B也給主機 A 發(fā)送一個 UDP 信息到主機 A 的公網(wǎng)地址上。這時主機 A 向主機 B的公網(wǎng) IP發(fā)送的信息導致 NAT A打開一個處于主機 A的和主機 B之間的會話,與此同時, NAT B也打開了一個處于主機 B和主機 A的會話。一旦這個新的 UDP會話各自向對方打開了,主機 A和主機 B之間就可以直接通信了 [14]。 3.端口受限制錐形( Port Restricted Cone) NAT 第五章 穿透 NAT 35 對于該類型的 NAT,解決辦法跟上面的方法一樣。 4.對稱型( Symmetric) NAT 對稱型 NAT,對于不同的外網(wǎng)主機地址,它都會分配不同的端口號 ,所以進行 UDP 打 孔 比較困難,但也可以進行端口預測打 孔 ,不過不能保證成功。 以上的穿透 NAT,是對 NAPT來進行穿透,主要是針對 UDP 協(xié)議。TCP 協(xié)議也有可能,但是可行性非常小,要求更高。并且,語音視頻通信是用 UDP 傳輸?shù)?,故針?TCP的 NAT穿透在這里不作討論?;A NAT不修改經過的數(shù)據(jù)包的端口號,它們可以看作是完全錐形 NAT 的精簡版本,即基礎 NAT 也可以被穿透。 NAT 設備將在一定時間后關閉 UDP 的一個映射,所以為了保持與服務器能夠一直通信,服務器或客戶端必須要周期性地發(fā)送 UDP包,保持映射不被關閉。 第六章 基于 JMF的語音聊天軟件的實現(xiàn) 36 第六章 基于 JMF 的語音聊天軟件的實現(xiàn) 編 程 和運行環(huán)境 1. 編程環(huán)境 本軟件采用 JBuilder 2021 為基本程序設計平臺,主要采用了 JMF,RTP、 RTCP,組播,穿透 NAT,多線程,可視化編程等技術。 2. 軟件環(huán)境 服務器端: Microsoft Windows + JRE; 客戶端: Microsoft Windows + JRE + JMF。 主要功能模塊的設計與實現(xiàn) 客戶端 1.采集音頻、視頻信號 要進行語音、視頻聊天,首先需要從麥克風和攝像頭采集音頻、視頻信號,本 功能模塊所完成的功能是,取得采集設備列表,取第一個可用的設備,并 從 設備 中 獲得信號。 流程圖如 61所示。 開 始獲 得 采 集 設 備 列 表獲 得 第 一 個 設 備 的 名 稱獲 得 該 設 備 的 定 位獲 得 數(shù) 據(jù) 源設 備 列 表 是 否 為 空結 束是否 圖 61 采集音頻、視頻信號流程圖 第六章 基于 JMF的語音聊天軟件的實現(xiàn) 37 過程: ① 由 CaptureDeviceManager 類的 getDeviceList(Format)方法得到Vector 類的 deviceList[15]。 ② 若設備列表為空,則結束,若不為空,用 Vector 類的 elementAt(int)方法獲得第一個可用的設備的名字,然后強制轉換為 CaptureDeviceInfo類。 ③ 調用 CaptureDeviceInfo 類的 getLocator( )方法,便能得到該設備的定位器 MediaLocator。 ④ 由獲得的 MediaLocator 創(chuàng)建 DataSource,便得到設備采集到的語音、視頻信號。 核心代碼: 2.處理音頻、視頻信號 從采集設備獲得的原始信號不適合在網(wǎng)絡上直接傳輸,需要對原始信號進行格式編碼轉換。本功能模塊完成對原始信號的格式編碼轉換功能。處理音頻、視頻信號,主要是處理信號的 Content Type(類似于文件類型 File Type) 和 Format ,用 Processor 的 setContentDescriptor( ContentDescriptor)可設置 Content Type,用軌道控制器( TrackControl,由 Processor 的 getTrack
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1