jrtplib 2 9 校園NAT衝突解決

2021-04-06 22:44:36 字數 1273 閱讀 2044

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...