由于某些原因没有用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:32010000001320000118@192.168.31.165: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/