2012-07-29 26 views
0

我需要編寫(C++,linux)rtp分析器,如:http://mmlab.disi.unitn.it/wiki/index.php/Analyzer。但我無法理解一些技術時刻,比如服務器如何接收udp數據報,確定一個udp數據報已完成,另一個udp數據報已啓動,以及如何識別包含rtp的udp數據報。看到分析儀的代碼會很高興,但我沒有找到它。 你能幫我找到我的問題的答案(我想知道如何通過套接字來實現)。非常感謝,我會很感激!在linux環境下用C++編寫的rtp分析器

回答

2

如果我正確地理解你的問題,你可以按照下面所列的步驟:

  • 在用C寫一個服務器程序++使用套接字庫之一,並創建一個UDP套接字。
  • 收聽您的客戶端發送RTP數據包的端口。
  • 當您偵聽指定的UDP端口時,您將逐個獲取UDP數據包。
  • 當你得到一個UDP數據包解析長度字段是一個2字節的字段,並從第4個字節開始。
  • 長度 - 8(UDP報頭大小以字節爲單位)是您正在查找的內容,實際上是RTP數據包的大小。
  • 通過獲取UDP數據包的第8個字節到長度的字節之間的位獲取RTP數據包。
  • 然後你有你的RTP包,你也可以通過查看IETF RFC3550中的樣子來解析它。

(也很好指定的UDP數據包可能到達的順序,你可以在RTP報頭使用序列號字段,以重新排序)