SIP (Session Initiation Protocol) формат пакета является то, что вдоль линий:Как декодировать SIP-пакеты?
INVITE sip:[email protected]: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:[email protected]>
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
мне нужно декодировать этот пакет и извлечь некоторые из его полей, как From
, To
, Call-ID
и т.д. Пакет является в формате ASCII, и каждая поданная кодируется в отдельной строке. Кроме того, порядок полей не определен, и они могут быть в любом порядке. Каков наилучший метод для извлечения значения требуемых полей из такого пакета? Мне нужно иметь возможность устанавливать и получать каждое поле отдельно. Самая простая идея, которая приходит мне на ум, - это прочитать пакет за строкой и проверить, начинается ли каждая строка с любого из моих желаемых значений. Я очень ценю любые советы, показывающие мне эффективный способ сделать это.
Вы не сказали, на каком языке/системе вы находитесь, но если вы можете найти C, вы можете найти http://www.gnu.org/software/osip/doc/html/group__howto2__parser.html полезный –
@AdrianMay I Я использовал это, и это ужасно. Я собираюсь развить свою собственную библиотеку. – Meysam