80000
nat
路由器202.102.154.3
60000
80000
外網伺服器
60.212.212.63
59999
60000
內網計算機
172.29.26.30
59999
內網計算機ip為
172.29.26.30
,nat
路由器ip
位址為202.102.154.3
ip位址為
60.212.212.23。
伺服器開設兩個執行緒:監聽執行緒和資料傳送執行緒
監聽執行緒用於登記客戶端位址,包括
ip位址和埠號,然後呼叫
adddestination()
,加入到傳送執行緒的回話目的端鍊錶。其監聽埠設為
80000
資料傳送執行緒用於傳送
rtp資料和
rtcp
資料報。
rtp回話建立於
60000
埠,在
rtpsock
邦定埠
60000
,rtcp
邦定埠
60001
,由昨天得知
sendsock
必須邦定埠,修改
rtp庫,使其邦定埠
59999。
內網電腦程式,也就是客戶端程式
rtp回話建立於埠
60000
,取出其
rtpsock
(該埠邦定
60000
埠,負責接收
rtp資料報)。向伺服器
80000
埠傳送請求,這代表伺服器
80000
埠傳送資料到內網計算機
60000
埠的通路開啟,伺服器取得客戶端位址,寫入目標位址鍊錶。由於客戶端是要接收到伺服器
59999
埠發來的資料,於是
rtpsock
傳送資料到伺服器的
59999
埠,此時伺服器
59999
埠傳送資料到客戶端
60000
埠的資料打通。這樣便可以正確的傳送和接收
rtp資料報。
但是這時候接收不到
rtcp
資料報,原因是因為伺服器
59999
埠傳送到客戶端
60001
埠的通路沒有打通。利用同樣的方式既可。
JRTPLIB使用例項
這幾天在看關於jrtplib方面的東西。在網上看了不少文章,其中有很大部分使用的jrtplib版本在3.0以下。語音傳送例項,希望有興趣的朋友一起參詳研究。chuckgao 第一部分 jrtplib的編譯及安裝 無法正常編譯的情況,出現error memcpy was not declared in...
jrtplib的編譯問題
在vc6下編譯jrtplib,但編譯example1.cpp時產生了很多錯誤,有以下幾種情況 1 use run time library的設定一定要統一。2 vc產生的workspace的debug setting,預設有個gz選項,catch release build errors in de...
交叉編譯jrtplib 問題
問題描述 1 安裝包 jrtplib 3.7.1.tar.gz jthread 1.2.1.tar.gz 2 步驟 分別解壓兩個安裝包 進入jthread 1.2.1使用.configure host arm linux cc arm linux gcc cxx arm linux g 命令配置 m...