好文档 - 专业文书写作范文服务资料分享网站

SIP实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

页眉内容

南京邮电大学

综合实验(软交换)

SIP注册实验

姓名:

学号: 班级:

日期:2013年10月13日

内容与要求:

设计流程

① 熟悉环境?

② 用自己用户登入,SIP配置实验)?

③ 学习协议流程(至少包括注册、正常呼叫、对端忙、重定向)? ④ 学习消息参数

(请求、相应消息所包含的头域,各个头中携带的参数)?

⑥ 选定程序设计题目设计实现方案? ⑦ 开源协议栈学习 + 题目实现? ⑧ 自己编程? ⑨ 测试?

综合实验 程序设计 (开源代码基础上)

一、完善UA功能(使用SS1B测试) 1、完整正常主叫信令流程 2、完善UA配置、使用界面

二、完成服务器部分功能(使用multiphone测试) 3、注册服务器

4、无状态代理服务器 三、自拟题目

综合实验(软交换)注意事项:

1、关于资料

实验室客户端有协议原文、技术手册、学习资料、开源代码、使用手册和例子。其它资料需自己准备。 2、设计方案

每组一个设计方案,建议题目中任选一个或自己拟定都可以,组中同学要有各自

页眉内容

侧重点和分工。 3、编程语言

编译器不限,VC、BCB、DELPHI、.NET. 语言 c、c++、delphi

开源代码,实验室提供OSIP(C语言编写),也可以自己下载其它开源代码

SIP架构:

界 面 /配置数据 程序测

业务流程控制试:下载VC++6.0更新

SDK获得

协议消息解析UDP通信模块SIP 终端(代理)这两个API文件。

再编译osip2,eXosip2和 osipparser2得到

加入到VC和WINDOWS的相应文件夹中,编译过程中需要以下2个库文件 界面如下:

抓包显示注册,注销,呼叫以及挂断的消息。 文本的SIP消息:

思考题:

1、实验室中设备的拓扑图,及个设备的主要作用 软交换设备 设备名称 软交换控制设备 中继信令合一网关 UP10业务平台 媒体服务器 综合网管系统 设备型号 ZXSS10 SS1b ZXMSG7200 UP10 Mes ZXNMS 01 数量 1 1 1 1 1 备注 硬件5万用户容量,软件200线用户license, 480线中继license 16E1,2 条64K信令 link Web客户端和业务服务器合一 网管客户端和网管服务器合一,包含40个网管客户端License 页眉内容

IAD综合接入设备 软PHONE B100 IP话机 7200后台服务器 SS1b的维护台 数据部分 设备名称 二层交换机 设备型号 2826 数量 2 说明 本次配置24个FE接口 ZXSS10 I508 SoftDA P801 PC机 PC机 1 40 1 1 1 1 每个设备可提供8个用户接入 可视软终端 后台服务器和本地维护台合一 SS设备的本地维护台 2、什么叫状态机,给出SIP协议中一个状态机的例子,并说明。

在开始一个线程的时候,就会开始一个状态机,当一个事件发生的时候,就会转到相应的状态上去。

如sip注册:(UA)

空闲状态-----(发送注册信息)-?待机状态等待响应-----(收到成功响应)--? 已注册状态 | |

(未收到响应) --(收到注册失败响应)-?空闲状态 |

空闲状态

3、设计一个SIP终端或 代理服务器,给出主要软件模块构成。 UAC UAS

4、分析SIP相关开源代码,说明SIP消息处理的方法。

以纯文本的方式在UA与server之间按照固定顺序发送消息,根据消息进行相应处理。

附录

#include #include #include #include #include /*

void cb_rcv4xx(sipevent_t * se,transaction_t * tr); void cb_rcv4xx(sipevent_t * se,transaction_t * tr) { printf(\} */ int

main (int argc, char *argv[]) {

eXosip_event_t *je;

osip_message_t *reg = NULL; osip_message_t *invite = NULL; osip_message_t *ack = NULL; osip_message_t *info = NULL;

页眉内容

osip_message_t *message = NULL; FILE *writefile;

int call_id, dialog_id; int i,flag; int flag1 = 1; int id;

char *identity = \ char *registerer = \ char *source_call = \ char *dest_call = \ char *con = \ char command; char tmp[4096];

char localip[128] = \

printf(\ 向服务器注册\\n\\n\ printf(\ 取消注册\\n\\n\ printf(\ 发起呼叫请求\\n\\n\ printf(\ 挂断\\n\\n\ printf(\ 退出程序\\n\\n\

printf(\ 执行方法INFO\\n\\n\

printf(\ 执行方法MESSAGE\\n\\n\ //初始化

i = eXosip_init (); if (i != 0) {

printf (\ return -1; } else {

printf (\ }

writefile = fopen(\osip_trace_initialize (8, writefile); OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_ERROR, NULL,

\

i = eXosip_listen_addr (IPPROTO_UDP, NULL, 5060, AF_INET, 0); // osip_setcb_rcv4xx(cf,&cb_rcv4xx); if (i != 0) {

eXosip_quit ();

fprintf (stderr, \ return -1;

页眉内容

} flag = 1; while (flag) {

printf (\ fflush(stdin);

scanf (\ //getchar ();

switch (command) { case 'h':

printf (\ eXosip_lock ();

eXosip_call_terminate (call_id, dialog_id); eXosip_unlock (); break; case 'c':

eXosip_lock ();

i = eXosip_register_build_register (id, 0, ®); if (i < 0) {

eXosip_unlock (); printf(\注销失败!\\n\ } else {

eXosip_register_send_register (id, reg); printf(\注销成功!\\n\ eXosip_unlock (); } break; case 's':

//传输INFO方法

eXosip_call_build_info (dialog_id, &info); snprintf (tmp , 4096, \

osip_message_set_body (info, tmp, strlen(tmp)); //格式可以任意设定,text/plain代表文本信息 osip_message_set_content_type (info, \ eXosip_call_send_request (dialog_id, info); break; case 'm':

//传输MESSAGE方法,也就是即时消息,和INFO方法相比,我认为主要区别,是MESSAGE不用建立连接,直接传输信息,而INFO必须

SIP实验报告

页眉内容南京邮电大学综合实验(软交换)SIP注册实验姓名:学号:班级:日期:2013年10月13日
推荐度:
点击下载文档文档为doc格式
5yiro0ll8f7s7tu43p391qw0b8cv4600t3i
领取福利

微信扫码领取福利

微信扫码分享