99问答网
所有问题
sip协议如何用C语言实现
我对通信协议以前一点基础没有,不过最近要用到sip协议,正在学习,希望有人能教教我如何用C来实现sip协议,给出思路,大体构架就可以了
举报该问题
推荐答案 2015-09-18
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基本协议,然后自己改造一个,或完全写一个,可能效果更好。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/WtvvvzOtO.html
其他回答
第1个回答 2009-06-20
楼上说的对,你可以先搜一下sip协议,了解一下,然后看看开源的osip的源代码 不过照你说的,要学的这么深的话,那恐怕不是一朝一夕能搞定的,因为毕竟实现一个协议最起码要一个团队才行,不然那将horrible。。。。本回答被提问者采纳
第2个回答 2009-06-24
实现Sip协议到不复杂,rfc也没几页还有中文的。
我以前在硬盘盒上就用C做了一个,源代码一时找不到了,代码量也就10K左右,建议楼主抓包对照著实现一下,很容易。
要是要实现sdp、rtp就复杂一些了。
第3个回答 2009-06-23
asterisk.org 看下,都是C源代码的!
www.afuns.cn
第4个回答 2009-06-19
我靠,这东西卖钱的啊,在这肯定是没人给了,我也不会,以前研究过,没研究明白,建议你看看OSIP和EXOSIP吧,开源的,你要是自己编写的话那你最起码得看RFC2543和RFC3261,大致也就这样了,希望对你有帮助
相似回答
用C语言
开发的通讯软件由哪几部分组成?
答:
1。处理物理通信接口部分:任何通信
协议
都具有自己的特色,需要一个模块去屏蔽和统一它们不同的接口要求,以便高层模块从具体的通信细节脱离。这一部分根据具体情况可能又有几种方式,比如会分为不同的协议层,像应用层
SIP
, SNMP等, 网络层的SOCKET,连路层和物理层,例如是否为光纤,还是以太网,等,可...
做
c语言
开发,都要掌握些什么?
答:
1.要非常了解微机原理,这是基础。2.编译原理,知道
C语言
是如何编译成汇编的.各种变量是如何分配,存放.函数调用是怎样回事.3.数据结构.数据结构直接反应了你解决现实问题的能力.暂时想不到更多,本人工作是用freescale的汇编和C混合编程.
Python 常用的标准库以及第三方库有哪些
答:
1、os:提供了不少与操作系统相关联的函数库 os包是Python与操作系统的接口。我们可以用os包来
实现
操作系统的许多功能,比如管理系统进程,改变当前路径,改变文件权限等。但要注意,os包是建立在操作系统的平台上的,许多功能在Windows系统上是无法实现的。另外,在使用os包中,要注意其中的有些功能已经...
C语言
里面结构体初始化遇到问题!!求助高手!!
答:
b.
sip
= &b;你的数组a有三个元素,每个元素都是一个结构体,所以每个元素都得这样初始化,就是说你总共要9条语句才能完成你这个结构体数组的初始化。不过后来的ISO C标准放宽了限制,对声明为struct类型的自动变量,也允许一次性初始化。其实是允许通过在{}列出常量一次性地完成对结构体内部所有域的...
求一个将十进制IP转换成二进制的
C语言
算法
答:
include <string.h> main(){ unsigned long i1,i2,i3,i4; //这个要改成long unsigned long ip; //同上 int i;char ip_str[20]={0},bin_str[33]={0};scanf("%s",ip_str);sscanf(ip_str,"%d.%d.%d.%d",&i1,&i2,&i3,&i4);ip=(i1<<24)+(i2<<16)+(i3<<8)+i4;/...
求一单片机抢答器论文(
C语言
编程)
答:
方案二:该系统采用MCS-51系列单片机AT89S51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的
实现
。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改性。 CS-51单片机特点如下: ...
485通信
协议怎么
规定
答:
直接拷贝就能够编译通过了。当然要把寄存器改了。只有几行需要改的哈:include "tot.h"define GOOD_PARSE 0 define BADID_PARSE 1 define BADLEN_PARSE 2 short parsed;char *pbuf;void t
sip
_input_proc(T
SIP
PKT *rpt,unsigned char inbyte);void rpt_packet(TSIPPKT *rpt,int *obuf...
我是一名大四的学生,电子信息专业,想自学嵌入式,希望能找份嵌入式工程...
答:
首先,你要先有所准备,比如学好
C语言
Linux ARM等嵌入式的基本知识,这些需要花好好的花几个月的时间,然后再多投投简历 比如到51job 中华英才网等等 关于如何学习嵌入式,我刚才看到一篇很不错的文章,是一个专科生介绍自己如何自学嵌入式,并找到嵌入式的工作,里面介绍了他的学习方法和学习过程,...
中职通学python课程可信吗
答:
而由python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。python社区提供了大量的第三方模块,它们的功能无所不包,覆盖科学计算、Web开发、数据库接口、图形系统多个领域,并且大多成熟而稳定。第三方模块可以使用python或者
C语言
编写。SWIG和
SIP
常用于将C语言编写的...
大家正在搜
sip协议及其应用
C语言实现
sip协议详解
sip协议有哪些过程
sip协议特点
sip协议五个功能
sip协议的基本功能
sip协议消息
sip协议全称
相关问题
网络编成语言和C语言的区别
网络编程语言有哪些????
网络编程用什么语言
c语言网络编程 网络编程什么语言
c语言网络编程主要工作内容是什么?
C语言网络编程
c语言网络编程 书
网络编程语言