0

我需要编写 (c++, linux) rtp 分析器,例如:http://mmlab.disi.unitn.it/wiki/index.php/Analyzer。但我无法理解一些技术时刻,例如服务器如何接收 udp-datagrams,确定一个 udp-datagram 已经完成,另一个 udp-datagram 开始,以及它如何识别包含 rtp 的 udp-datagrams。很高兴看到分析器的代码,但我还没有找到。你能帮我找到我的问题的答案吗(我想知道它是如何通过套接字实现的)。非常感谢,我将不胜感激!

4

1 回答 1

2

如果我确实正确理解了您的问题,您可以按照以下步骤操作:

  • 使用其中一个套接字库在 C++ 中编写服务器程序,并创建一个 UDP 套接字。
  • 侦听客户端发送 RTP 数据包的端口。
  • 当你监听指定的 UDP 端口时,你会一一收到 UDP 数据包。
  • 当您收到一个 UDP 数据包时,解析长度字段,它是一个 2 字节字段,从第 4 个字节开始。
  • 长度 - 8(UDP 标头大小,以字节为单位)是您要查找的内容,实际上是 RTP 数据包的大小。
  • 通过获取 UDP 数据包的第 8 个字节到 Length'the byte 之间的位来获取 RTP 数据包。
  • 然后你有了你的 RTP 数据包,你也可以通过查看 IETF 在 RFC3550 中的样子以同样的方式解析它。

(也可以指定 UDP 数据包可能乱序到达,您可以使用 RTP 标头中的序列号字段对它们重新排序)

于 2012-10-17T21:58:47.400 回答