sip协议如何用C语言实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sip协议如何用C语言实现相关的知识,希望对你有一定的参考价值。
我对通信协议以前一点基础没有,不过最近要用到sip协议,正在学习,希望有人能教教我如何用C来实现sip协议,给出思路,大体构架就可以了
1、开源的sip服务器端,比较好用的是Asterisk,标准C程序实现,代码清晰。2、sip的client相对比较多,主要有exosip,pjsip和opal。exosip简单易用,在PC上用比较方便。但是涉及的相关资源太多,用了osip,srtp,ms2等众多的开源库,ms2下面还用到了ffmpeg,别的不说,光编译就是噩梦。opal功能最强,虽然也用到了ffmpeg ,但是自己封装的非常好,采用插件方式,调用灵活。opal采用class方式提供封装,接口非常友好。感觉唯一不爽的地方,就是低层使用了ptlib,虽然多平台下都很好用,但放在嵌入式下感觉稍庞大了一些。pjsip精巧,方便移植,嵌入式下应该是首选。不过视频频支持方面扩展起来比opal麻烦。个人感觉,对于windows开发者来说,pjsip最大的好处就是代码调试方便。整个工程一次编译通过,另外两个库还要找很多相关的资源
。
3、其他的一些协议栈也调试过,比如reSipphone,好象是这个名字,还有Yate,不过从快速开发角度看,都不太合适。现在搞sip开发的,一开始就是先找好协议栈。linphone,ekiga什么的,但庞大。对于刚开始做的,最好是一个精简的demo。后来找到pjsip下面的几个例子,慢慢地了解了sip的工作流程,当然少不了抓包工具和tcpdump。
不过,其实,sip没有想象中的那么麻烦。现在回头看,刚开始做项目,使用协议栈绝对不是好想法。如果换个方向,先熟悉SIP基本协议,然后自己改造一个,或完全写一个,可能效果更好。 参考技术A 楼上说的对,你可以先搜一下sip协议,了解一下,然后看看开源的osip的源代码 不过照你说的,要学的这么深的话,那恐怕不是一朝一夕能搞定的,因为毕竟实现一个协议最起码要一个团队才行,不然那将horrible。。。。本回答被提问者采纳 参考技术B 实现Sip协议到不复杂,rfc也没几页还有中文的。
我以前在硬盘盒上就用C做了一个,源代码一时找不到了,代码量也就10K左右,建议楼主抓包对照著实现一下,很容易。
要是要实现sdp、rtp就复杂一些了。 参考技术C asterisk.org 看下,都是C源代码的! www.afuns.cn 参考技术D 我靠,这东西卖钱的啊,在这肯定是没人给了,我也不会,以前研究过,没研究明白,建议你看看OSIP和EXOSIP吧,开源的,你要是自己编写的话那你最起码得看RFC2543和RFC3261,大致也就这样了,希望对你有帮助
以上是关于sip协议如何用C语言实现的主要内容,如果未能解决你的问题,请参考以下文章