统计 |
blog名称:人在旅途 日志总数:174 评论数量:504 留言数量:13 访问次数:1566245 建立时间:2005年12月7日 |
生命是过客,人在旅途。奶奶是信基督教的,没啥文化,却养育了四子二女,还带过九个孙辈。老人家对生命的看法就是“人都是客人,迟早要回去的。”就以《人在旅途》来纪念她。

« | December 2019 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | |
|
公告 |
本人上传的源程序中可能引用或使用了第三方的库或程序,也可能是修改了第三方的例程甚至是源程序.所以本人上传的源程序禁止在以单纯学习为目的的任何以外场合使用,不然如果引起任何版权问题,本人不负任何责任. | |

|
本站首页 管理页面 写新日志 退出
调整中...
[SIP技术]mjSip学习笔记 |
人在旅途 发表于 2006-3-13 15:38:48 |
1.URL:http://www.mjsip.org/
2.它也是用JAVA编写的,唯一要求的外部库是客户端使用的JMF(只要安装了JMF就可以了,编译和执行都不用特殊处理).它比SUN的JAIN的STACK简单,而且新,上次RELEASE估计在2005年十月份,所对应的SIP功能也比JAIN多,包括支持REFER等消息格式.它也提供源程序,源程序结构比JAIN简单多了,三个部分:包括SIP的STACK和SIP的SERVER和SIP的客户端.它也有BIN的下载,服务器和客户端配置都很简单,基本上看着配置文件内部说明就可以了.从我看到该网站到学习下栽编译测试和分析LOG基本上不用一天工作时间就完成了.
3.不过它的MAKE文件是GNU的不是ANT的,对NETBEANS来说使用不便,不过由于它结构简单,我很方便的用NETBEANS5.0生成了三个PRJ(STACK,SERVER,UA),再从源程序中拷贝JAVA文件和配置文件到这三个PRJ中,很方便地就再编译和执行成功了.
这三个NETBEANS5.0的PRJ源程序和项目文件在这里:500)this.width=500'>MjSIP.rar(只用于学习,版权问题盖不负责,请去http://www.mjsip.org/查询).
4.它的SERVER缺省运行在STATELESS中,当然也可是STATEFUL的.
5.和JAIN的SAMPLE一样,大概是JMF的缘故它的UA在通话中也有很大的延迟,大约一秒多吧.
6.可惜没有商业开发的免费许可(要购买).
7.测试了下,一次INITE对话大概要用0.2秒多点时间,其他简单的TRANSACTION只要用0.1妙左右.
8.2006年4月13日,发现各致命的错误:
当INVITE或REGISTER等消息因为认证(407,401)而被打回后,再加入了认证HEADER
再送时,消息的BRANCH值仍然和第一次的一样.这样一来就和第一次同一个TRANSACTION了(尽管程序是NEW了个新TRANSACTION,但它是用上次消息经过加工后NEW的,所以BRANCH值仍然是上次旧的),而RFC要求是两个不同的TRANSACTION,这样一来服务器就可能因为新消息仍然属于旧TRANSACTION而拒绝响应.
我在ExtendedInviteDialog.onTransFailureResponse中把旧消息的BRANCH值更新了下(在BaseMessage.refreshBranch()中增加了更新函数),测试了下INVITE或REGISTER的情况,正常.
|
阅读全文(60901) | 回复(52) | 编辑 | 精华 |
回复:mjSip学习笔记 |
fchenscut(游客)发表评论于2006-3-30 10:15:35 | 你看过了MjSip里面的server那部分代码了吗?要实现转接,用这个mjSever应该可以。
你会不会大胆尝试一下将那个Server(SoftPBX Asterisk)换成mjSever呢?
以下引用feige(游客)在2006-3-30 10:08:02的评论:
但我看了MJSIP是基于SIP开发的,Jain-Sip也是基于SIP的,我想Jain-Sip能做的事MJSIP应该没有问题。
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
回复:mjSip学习笔记 |
feige(游客)发表评论于2006-3-30 10:08:02 | 但我看了MJSIP是基于SIP开发的,Jain-Sip也是基于SIP的,我想Jain-Sip能做的事MJSIP应该没有问题,
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
回复:mjSip学习笔记 |
fchenscut(游客)发表评论于2006-3-30 9:59:11 | SIP和VoIP是不同的吧!而且两者的前途也不同,大有前者取代后者的趋势。
以下引用feige(游客)在2006-3-30 9:47:29的评论:
……SIP是个协议,VOIP一般是基于SIP协议(???)或H.233协议开发的通信软体吧,这是我的理解不知对否
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
回复:mjSip学习笔记 |
fchenscut(游客)发表评论于2006-3-30 9:53:27 | 用sip协议来进行多点通讯是要用到sip的Server的,这个Server负责对多个端点的流媒体进行传输和同步。
你看见了*.cfg配置文件里面的这两项了吗?
#bin_rat="c:\program files\mbone\rat"#bin_vic="c:\program files\mbone\vic"
我今天安装了这两个软件,原来这两个是用来进行多点的音像传输的,主要应用是进行远距离召开会议。
以下引用feige(游客)在2006-3-30 9:43:42的评论:
……后,任何IPHone(在这个局域网内的)都可以打到UA上了(这时UA可能已注册拉),但还是无法交流。
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
回复:mjSip学习笔记 |
feige(游客)发表评论于2006-3-30 9:47:29 | 但现在是电话可以打通,只是语音无法正常发送
SIP是个协议,VOIP一般是基于SIP协议或H.233协议开发的通信软体吧,这是我的理解不知对部队
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
回复:mjSip学习笔记 |
fchenscut(游客)发表评论于2006-3-30 9:44:00 | VoIP和SIP是两种不同的协议.使用这两种协议通讯时可以用同一个Server(SoftPBX Asterisk)的吗?
不懂.
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
回复:mjSip学习笔记 |
feige(游客)发表评论于2006-3-30 9:43:42 | 我试了一下把代理注册掉,已开始只能通过UA打到IPPhone上,IPHone无法打到UA上,但当UA一旦打过一个IPHone后,任何IPHone(在这个局域网内的)
都可以打到UA上了(这时UA可能已注册拉),但还是无法交流。
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
回复:mjSip学习笔记 |
fchenscut(游客)发表评论于2006-3-30 9:34:20 | 对,就是这样.
以下引用feige(游客)在2006-3-30 9:18:55的评论:
……因此你说不要代理,我不太明白,不用代理两个UA间可以直接通信吗
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
回复:mjSip学习笔记 |
feige(游客)发表评论于2006-3-30 9:18:55 |
因为我们的所有IPPhone都是注册到我们VOIP-Server(192。168。68。16:5060,它实际上是一个SoftPBX Asterisk)上的,那我现在
做的东西是一个AppletPhone,要求是通过IPPhone可以打到我的AppletPhone上,我的AppletPhone也可以打到IPPhone上,另外就是AppletPhone必须能够将一个incomingcall 转接到另外的一台IPPhone上。我现在主要想解决的问题就是来电转移,我按照REFER的定义实现了相关方法,但转移总是不成功,我也不知为什么(我最近刚刚接触SIP),看到
你的网站上提到了MJSIP而且,我看了一下他的源码,结构确实非常清晰,而且功能也多(相对Jain-SIP)因此想通过MJSIP打到我的目的,由于我对MJSIP的原理也不是太清楚,因此你说不要代理,我不太明白,不用代理两个UA间可以直接通信吗
以下为blog主人的回复:
建议看一下RFC3261和3891,再去网上找些SIPMessage的例子的流程看看,然后把实验网上的SIP的MESSAGE都LOG下来分析一下.REFER比较复杂,分ATTENDED和UNATTENDED,IP电话和SERVER对它们的支持也不尽想同.
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
回复:mjSip学习笔记 |
fchenscut(游客)发表评论于2006-3-29 22:34:40 | 你是在局域网里面测试的,要代理干什么?
我的主要配置信息如下:
#via_addr=192.168.68.13#host_port=4000transport_protocols=udp tcpoutbound_proxy=192.168.68.16:5060
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
|