由於某些原因沒有用eXosip,於是自己tcpsocket建立連接並解析報文,osip安裝的自己找找吧。解析代碼如下:
#include<osipparser2/osip_message.h>
#include<osipparser2/osip_parser.h>
int main()
{
parser_init ();//必須要有這句話
char text[] = "REGISTER sip:32010000002000000001@3201000000 SIP/2.0\nVia: SIP/2.0/TCP 192.168.31.165:40917;rport;branch=z9hG4bK1376784587\nFrom: <sip:32010000001320000118@3201000000>;tag=1554671569\nTo: <sip:32010000001320000118@3201000000>\nCall-ID: 847324383\nCSeq: 1 REGISTER\nContact: <sip:[email protected]:5060>\nMax-Forwards: 70\nUser-Agent: IP Camera\nExpires: 3600\nContent-Length: 0\n";
osip_message_t *sip;
int i;
i=osip_message_init(&sip);
if (i!=0) { printf("cannot allocate\n"); return -1; }
i=osip_message_parse(sip, text, strlen(text));
if (i!=0) { printf("cannot parse sip message\n"); return -1;}
printf("%s %s\n",sip->sip_version, sip->sip_method);
osip_message_free(sip);
}
附osip、eXosip下載地址http://download.savannah.nongnu.org/releases/