gpt4 book ai didi

c++ - 如何解码SIP数据包?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:08 28 4
gpt4 key购买 nike

SIP( session 发起协议(protocol))数据包的格式类似于:

INVITE sip:999999@192.168.202.90:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.100.86:5060;rport;branch=z9hG4bKPj3f79189a-581d-4f58-a4dd-bc64e050421c
Max-Forwards: 70
From: <sip:192.168.100.86>;tag=60f4c35a-6cdb-4b19-b580-f3d3ad5c1abf
To: <sip:999999@192.168.202.90>
Contact: <sip:192.168.101.86:5060;ob>
Call-ID: 247ee45e-957a-481a-b97b-82f2429a999d
CSeq: 17491 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
User-Agent: PJSUA v2.3 Linux-3.2.0.4/x86_64/glibc-2.13
Content-Type: application/sdp
Content-Length: 479

我需要解码这个数据包并提取它的一些字段,比如FromToCall-ID等。是 ASCII 格式,每个文件都在单独的行中编码。此外,字段的顺序未确定,它们可以按任何顺序排列。从此类数据包中提取所需字段值的最佳方法是什么?我需要能够分别设置和获取每个字段。我想到的最简单的想法是逐行读取数据包并检查每一行是否以我想要的任何值开头。我非常感谢向我展示一种有效的方法来做到这一点的任何建议。

最佳答案

就我个人而言,我会手动执行此操作。这是完全确定的。字段名称中永远不会有冒号,因此您只需在每一行中查找它、截断并填充 map 。我会尽量不为特定字段(如“Via”)编写代码。只需编写一些通用的东西,也可以在不更改代码的情况下读取电子邮件标题。你可以试着找一个图书馆,但它会带来你不需要的行李。它很小,可以手写。注意安全问题,例如没完没了的线路。

关于c++ - 如何解码SIP数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26571970/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com