摘要: 1.简介SIP(Session Initiation Protocol)是一种类似于http协议的纯文本应用层协议。SIP可以用来控制会话的建立、取消、关闭等操作。主要可以实现以下功能:用户定位:检查终端用户的位置,用于通信;用户有效性:检查用户参与会话的意愿程度;用户能力:检查媒体和媒体参数;建立会话:“振铃”,在呼叫和被叫方同时建立会话的参数;会话管理:包括会话的传输和终止,修改会话参数以及请求服务2.SIP的结构在SIP协议中主要包含以下几种逻辑上的角色:UA、Proxy Server、 Register/Location Server、Redirect Server。UA:用户代理(U 阅读全文
posted @ 2012-10-04 21:05 wulax 阅读(1126) 评论(0) 推荐(1) 编辑
摘要: 1.概念会话是SIP协议中一个重要的概念,它不同于会话,它是发生在两个UA之间点对点通讯。通俗来说,就像是两个人说话,举个例子:A:Hi,我叫Tommy,你好!B:我叫Elaine,很高兴认识你A:不知道今晚你有没有时间,请你喝咖啡B:我有时间。A:那就今天晚上7点在华语的星巴克B:嗯,好的A:那就这么定了,晚上见。B:晚上见。通常是有一方发起对话,当对方有没有回应,或者回应是“不好意思我不认识你”、“我现在忙没时间”时对话就无法开始;如果对方回应是“稍等”,那对话就处于早期等待开始的状态;如果对法给出回应是“你好”的时候表示对方愿意与你对话,对话就正式开始了。对话的结束通常是一方说“再见”之 阅读全文
posted @ 2012-10-04 21:04 wulax 阅读(664) 评论(0) 推荐(0) 编辑
摘要: 今天在看eXosip代码的时候发现一个问题,在eXosip中使用TCP的socket实现了一个pipe管道,具体的原理是,打开一个TCP的socket然后设置成监听socket,再打开另一个socket作为pipe的一端向监听socket发起连接,监听socket经过accept后返回一个已连接socket,该socket作为pipe的另一端,这个很像用sockpair创建的socket对。但是我发现,在连接完成以后监听socket并没有关闭,带着这个疑惑我上网查了一些资料。以下是我的理解(没有看过TCP的源代码,只是猜测)。TCP协议作为一个可靠的协议是有状态的,协议栈在每个连接上都维护了一 阅读全文
posted @ 2012-10-04 21:04 wulax 阅读(2736) 评论(0) 推荐(0) 编辑
摘要: 1.总体结构看了这么长时间的RFC文旦,谈谈我对SIP协议通信粒度的理解吧,在SIP协议中通信的行为分成了不同的粒度,从小到大分别是点到点的sip消息的传输(这点是我自己总结的),sip事务,sip对话以及sip会话。点到点的sip消息的传输时sip协议传输的最基本的单位,发生在传输层(Transport Layer),就是将一个sip message通过udp、tcp或tls等底层协议发送到目的UA(或者Proxy)的传输层。事物的粒度在点对点sip消息传送之上,包含了一系列的sip消息传输,事务由一个request、0到多个临时response以及一到多个最终response组成,表示了一 阅读全文
posted @ 2012-10-04 21:03 wulax 阅读(4434) 评论(0) 推荐(2) 编辑
摘要: 一下程序实现从1970/1/1 0:0:0开始的秒数到对应日期的变化比如秒数为1,对应日期1970/1/1 0:0:1源文件:#include "rtc.h"#define SEC_PER_DAY 86400#define SEC_PER_HOUR 3600#define DAY_PER_4YEAR 1461static const int __day_in_leapyear[13] = { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366};static const int __day... 阅读全文
posted @ 2012-04-19 20:58 wulax 阅读(598) 评论(0) 推荐(0) 编辑
摘要: 1 static const int days_per_month_in_leapyear [13] = { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 2 static const int days_per_month_in_commonyear [13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 3 // ...... 4 // year,month,day中存储当前日期 5 void UTC2Timezone(lo... 阅读全文
posted @ 2012-04-19 20:51 wulax 阅读(533) 评论(0) 推荐(0) 编辑
摘要: gtest使用了xUnit的框架,xUnit的框架的公共的特点是包含了一下几个元素: test case:测试用例集 test:测试用例 test fixture:构造测试用例的公共前提条件或状态 test setup:构造测试的前提条件或状态 test teardown:还原到测试执行前的状态 assertion:断言,用于检查 gtest的... 阅读全文
posted @ 2011-12-27 00:13 wulax 阅读(2083) 评论(1) 推荐(0) 编辑
摘要: Subclipse Subclipse是eclipse的一个svn的插件,利用Subclipse能够方便进行代码的版本管理和协同开发 官方网站:http://subclipse.tigris.org/ 最新版本:1.8 (更新于2011-1-25) 安装步骤: 1. 打开eclipse->Help->Install New Software…。 2. 在弹出的对话框的Work with... 阅读全文
posted @ 2011-10-26 00:56 wulax 阅读(3038) 评论(0) 推荐(0) 编辑
摘要: SubclipseSubclipse是eclipse的一个svn的插件,利用Subclipse能够方便进行代码的版本管理和协同开发官方网站:http://subclipse.tigris.org/最新版本:1.8 (更新于2011-1-25)安装步骤:打开eclipse->Help->Install New Software…。在弹出的对话框的Work with一栏中输入网址:http://subclipse.tigris.org/update_1.8.x,然后后点击Add按钮弹出对话框Add Repository。在Name中输入Subclipse(或者其他任意名字),点击OK! 阅读全文
posted @ 2011-10-26 00:36 wulax 阅读(1896) 评论(0) 推荐(0) 编辑
摘要: 基本概念:(暂时先留着,嘿嘿) 阅读全文
posted @ 2011-10-06 23:06 wulax 阅读(113) 评论(0) 推荐(0) 编辑