逸逸记事
逸逸记事

我的分类(专题)

首页(175)
儿子(9)
SIP技术(9)
Web2.0(12)
摄影和DVD(8)
软件开发随笔(18)
名古屋打工生活(11)
微软技术开发(47)
Java技术(12)
加拿大移民生活(20)
生活点滴(6)
第一份工作--上海贝尔(18)
完成项目(13)
回国后的生活(0)


最新日志
独行者
终于知道什么叫外包了
人生悲哀之事
水晶报表中显示动态图片
水晶报表中的简单参数设置
怀念下小黑
dotnet中的数据连接Timeout
老板的思路
又买房了
交通事故

最新回复
回复:独行者
回复:怀念下小黑
回复:老板的思路
回复:mjSip学习笔记
回复:老板的思路
回复:dotnet中的数据连接Timeo
回复:mjSip学习笔记
回复:交通事故
回复:交通事故
回复:又买房了

留言板

签写新留言

您好,很希望问您一个关于jain-sip
生活经历就是最大的财富,羡哦~
java的Web开发问题
回复:疑问
IT还不如妓女呢,呵呵
myjavaserver的空间
求助
您的子域名已开通

统计
blog名称:人在旅途
日志总数:175
评论数量:505
留言数量:13
访问次数:1665027
建立时间:2005年12月7日

链接

 

生命是过客,人在旅途。奶奶是信基督教的,没啥文化,却养育了四子二女,还带过九个孙辈。老人家对生命的看法就是“人都是客人,迟早要回去的。”就以《人在旅途》来纪念她。

 

«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31

公告
  本人上传的源程序中可能引用或使用了第三方的库或程序,也可能是修改了第三方的例程甚至是源程序.所以本人上传的源程序禁止在以单纯学习为目的的任何以外场合使用,不然如果引起任何版权问题,本人不负任何责任.




     本站首页    管理页面    写新日志    退出
调整中...
[SIP技术]JAIN SIP instantmessaging学习
人在旅途 发表于 2006/1/17 15:15:19

学习目的:通过阅读源程序,了解如何使用JAVA的JAIN包来制作SIP客户端程序(IM).     学习笔记:    Class  说明  InstantMessagingGUI  启动类,负责显示主画面,读如初始化文件,初始化个变量,启动和停止SIPListener.  IMUserAgent  实现SIPListener.借口,负责SIPStack和SIPProvider等SIP通信类的生成和初始化,SIPListener的登记和注销,响应各种到达的事件(SIP消息).  ListenerInstantMessaging  负责响应主画面的各种UI操作,如Sign in,OFFLINE,IM...  IMMessageProcessing  负责IM聊天中的消息发送和接受,其中有DIALOG概念  AuthenticationDialog  让用户输入ID和密码  AuthenticationProcess  负责提供从认证文件来的ID和密码信息,产生认证要求SIP消息的回映SIP消息的头  BuddyList  负责主画面中BuddyList的操作(加,减,信息...)和所对应的认证文件相关操作(读如,保存)  BuddyTag  BuddyList中的一项  ChatFrame  IM画面  ChatSession  负责一个IM画面的操作,各种IM信息管理,收发操作(信息显示,SIP发信...),IM的SIP对话管理  ChatSessionManager  多个ChatSession管理  AlertInstantMessaging  显示错误信息  ConfigurationFrame  初始化信息管理画面  RemoteSipURLFrame  让用户输入IM的对方地址  presence下*Processing  负责各种SIP消息的接受分析和回应  IMRegisterProcessing  负责REGISTER和UNREGISTER消息,成功后会调用IMSubscribeProcessing和IMNotifyProcessing发送附加消息  注:gov.nist.javax.sip.Utils被使用,但它在API文档中不存在.  1.REGISTER(sign in)消息  消息行  说明  REGISTER sip:nist.gov:4000 SIP/2.0  请求方法 URI SIP版本号   Call-ID: nist-sip-im-register-callId1  主机 本地表示  CSeq: 1 REGISTER  同一CALLID中的序数 请求方法  From: <sip:deruelle@nist.gov>;tag=924  FROM(用户) 标记(区别共享同一IP地址相同CALLID的请求)  To: <sip:deruelle@nist.gov>  TO(用户)  Via: SIP/2.0/UDP 127.0.0.1:4010;branch=z9hG4bK973d37d8ff9de1a0e2a50e5ff70f82e7  发送协议 发送方 分支参数(用于代理服务器并行分发请求时标记个分支)  Max-Forwards: 10    Contact: <sip:127.0.0.1:4010;transport=udp>  给出以后需要时的直接通讯地址  Allow: INVITE, SUBSCRIBE, NOTIFY, MESSAGE, INFO, PUBLISH    Content-Length: 0     2.REGISTER(sign in)消息的响应    消息行  说明  SIP/2.0 200 OK  SIP版本号 状态码 状态说明   Call-ID: nist-sip-im-register-callId1  (同请求)  CSeq: 1 REGISTER  (同请求)  From: <sip:deruelle@nist.gov>;tag=924  FROM(用户) 标记(区别共享同一IP地址相同CALLID的请求)  To: <sip:deruelle@nist.gov>  TO(用户)  Via: SIP/2.0/UDP 127.0.0.1:4010;branch=z9hG4bK973d37d8ff9de1a0e2a50e5ff70f82e7  发送协议 发送方 分支参数(用于代理服务器并行分发请求时标记个分支)  Max-Forwards: 10    Contact: <sip:127.0.0.1:4010;transport=udp>;expires=3600  直接通讯地址(同请求) REGISTER有效时间  Content-Length: 0     3.REGISTER(sign out)消息 基本和REGISTER(sign in)消息一样,只是在以下两个方面不同: 3.1<TO>头部字段和<FROM>头部字段一样加了个标记项. 3.2<Allow>头部字段没有了,被一个<Expires: 0>头部字段所代替了. 4.REGISTER(sign out)消息的响应 和REGISTER(sign out)消息一样有了相应的变化(标记项和<Expires: 0>头部字段). 5.Subscribe和Unsubscribe消息(IM的消息)在增加一个Contact(联系人)后要向该联系人发送Subscribe消息,该联系人收到该消息后可以认证发送者后作出不同响应.在删除一个Contact(联系人)后要向该联系人发送Unsubscribe消息,该消息后和Subscribe基本相同,expiresHeader为0或空的是Unsubscribe消息,有大于0数据的是Subscribe消息.这两个消息和其他SIP消息一样都靠SIPProxy转送.如果消息的接受一方没有Register(在线),SIPProxy会代理没有在线一方响应.在用户SignIn(发送REGISTER消息)后会自动向所有BUDDYLIST中的用户(联系人)发送SUBSCRIBE消息.同样在用户SIGNOUT(发送UNREGISTER消息)后也应该向所有BUDDYLIST中的用户(联系人)发送UNSUBSCRIBE消息.Subscribe消息的发送和响应如下:发送者先检查看和联系人是否已经有DIALOG了,如果已经有了那么fromHeader和toHeader等参数就从DIALOG中取并用DIALOG发送消息,不然就自己产生参数(fromHeader中有新TAG数据而toHeader中没有TAG数据)并用新的TRANSACTION发送.联系人方收到该消息后,立即返回OK响应消息.随后认证发送者,如果可以接受发送者,就向presenceManager中追加或更新发送者所代表的Subscriber(包括名字,响应消息和DIALOG),并把自己状态通过Notify消息发给发送者(通过SIPPROXY);如果认证结果为不可接受,就通过Notify消息(状态为NULL)通知发送者.发送者收到响应消息后,就从消息中取得新的DIALOG并往presenceManager中追加或更新发送者所代表的Presentity(包括名字,响应消息和DIALOG).再往buddyList中追加该联系人的情报.Unsubscribe消息的发送和响应如下:消息的发送和Subscribe消息的发送一样只是expiresHeader为0.联系人方收到该消息后,就检查DIALOG情报,如果消息发自以前发送过Subscribe消息的用户(有DIALOG),就返回OK响应,并向发送方发送状态为NULL的NODIFY消息;如果消息发自以前没有发送过Subscribe消息的用户(没有DIALOG),就返回CALL_OR_TRANSACTION_DOES_NOT_EXIST响应.发送者收到响应消息后,不做任何处理.

阅读全文(28194) | 回复(12) | 编辑 | 精华

Best Places To Retire
Kids Timberland Boots(游客)发表评论于2010/4/1 13:45:47

Go ahead, dream a little. Retirement may be years, or even decades, away. But that doesn't mean you can't think about it--and where you might spend your golden years. For some, it's the stillness of a cool morning while fishing on a lake. For others, it's the feel of warm sand between the toes as the surf rushes in. For still others, it's the hurly-burly of city life with bookstores, restaurants, theaters, and museums.To help you get started on the process of picking a favorite place, U.S. News put together a list of about 2,000 American places with a population above 15,000. Yes, some people prefer even fewer neighbors, and rural life has its charms. But often those charms come with limited access to top medical care or not enough job options for those retirees who may want or need additional income.From that first cut Kids Timberland Boots of 2,000, we winnowed it down to a little over 1,000 places, using criteria that included cost of living, climate, crime rate, access to healthcare, educational opportunities, and cultural and recreational amenities. To whet your appetite, we selected 10 editors' picks (from Bozeman, Mont., to Venice, Fla.), which you'll find profiled in the following pages. There's a big-city splurge, San Francisco, with world-class culture and dining, breathtaking views, and, yes, housing prices to match. But there are also heartland ...

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:JAIN SIP instantmessaging学习
huashan1122(游客)发表评论于2007/10/29 20:26:37

您好: 我刚开始学JAIN,不知道从哪下手,可不可以指点一下,推荐一些书和资料。 谢谢! 另:邮箱huashan1122@163.com
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:JAIN SIP instantmessaging学习
Lilac(游客)发表评论于2007/5/14 10:20:23

在IMRegisterProcessing这个类中,实际上只有三个方法:SIGN IN、IGN OUT、与processOK。 它在SIGN IN中利用clientTransaction.sendRequest();送出了一个请求,而processOK是对响应消息进行处理, 不清楚它在哪里实现对SIGN IN送出的请求进行处理? p_lilac@sina.com
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:JAIN SIP instantmessaging学习
Lilac(游客)发表评论于2007/5/14 10:11:07

发现在这个类中,gov.nist.sip.instantmessaging.presence.IMUserAgent, public void processRequest(RequestEvent requestEvent)这个过程并没有处理“REGISTER”这个消息, 也就是sign in后 实际上并没有对Register这个请求进行处理。 p_lilac@sina.com
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:JAIN SIP instantmessaging学习
晓开(游客)发表评论于2006/9/13 20:47:31

运行服务器代码后 transport  tcp port  4000 transport  udp port  4000 updReg: list=[(empty)]        inList=false        key=sip:mranga@myjava updReg: updated list=[sip:mranga@myjava] Notifier couldn't write to file users\mranga\winfo.xml updReg: list=[sip:mranga@myjava]        inList=false        key=sip:deruelle@myjava updReg: updated list=[sip:mranga@myjava, sip:deruelle@myjava] Notifier couldn't write to file users\deruelle\winfo.xml   代码为NIST SIP下,相信楼主很熟悉,请指教问题出在哪里,感谢
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:JAIN SIP instantmessaging学习
开开(游客)发表评论于2006/9/13 20:45:21

不知道楼主能不能看到,你这里哪里可以下你说的这个代码,另外,想请教的是,我从NIST-SIP那边下的代码,相信楼主必定很熟悉,我在一个电脑上可以跑,但是,换个地方后,就不能SIGN IN 了,同时,出现了问题 transport  tcp port  4000 transport  udp port  4000 updReg: list=[(empty)]        inList=false        key=sip:mranga@myjava updReg: updated list=[sip:mranga@myjava] Notifier couldn't write to file users\mranga\winfo.xml updReg: list=[sip:mranga@myjava]        inList=false        key=sip:deruelle@myjava updReg: updated list=[sip:mranga@myjava, sip:deruelle@myjava] Notifier couldn't write to file users\deruelle\winfo.xml 我不知道为什么,请指教!谢谢, 另外,不知道楼主能不能把邮箱贴出来  
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:JAIN SIP instantmessaging学习
cnsun(游客)发表评论于2006/7/24 9:55:00

协议我看了一点时间了,就是这个程序如何下手呢? 望指教! 以下为blog主人的回复:  建议先学一下怎么成为个程序员吧,不是或者不想成为程序员的就没必要去看源程序了.
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:JAIN SIP instantmessaging学习
cnsun(游客)发表评论于2006/7/17 10:59:45

请问一下,我如果想看懂这个程序,如何下手呢,没有文档,望指教:) 以下为blog主人的回复:  建议先学SIP协议
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:JAIN SIP instantmessaging学习
CNSUN(游客)发表评论于2006/6/27 13:51:29

谢谢楼主,只是你说的MJSIP支持IM协议吗,我看你的这个学习笔记就是IM的啊,能不能共享一下源代码啊! cnsunriver@sina.com.cn 以下为blog主人的回复: 源码不是我的,是开放软件,可参考下面的介绍:  http://blogger.org.cn/blog/more.asp?name=zhoujianjun&id=11262
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:JAIN SIP instantmessaging学习
xiaoyu(游客)发表评论于2006/6/27 13:32:43

楼主,你的JAIN SIP instantmessaging学习是针对什么的呢?看不太懂阿,呵呵,有源码吗,可以共享吗?谢谢
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

» 1 2 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.756 second(s), page refreshed 144760462 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号