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

SIP实验报告

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

页眉内容

南京邮电大学

综合实验(软交换)

SIP 注册实验

姓名: 学号: 班级:

日期: 2013 年 10 月 13 日

内容与要求:

设计流程

① ③ ④

熟悉环境

学习协议流程(至少包括 学习消息参数

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

⑥ 选定程序设计题目设计实现方案 ⑦ 开源协议栈学习 + 题目实现 ⑧ 自己编程 ⑨ 测试 综合实验 程序设计 (开源代码基础上)

一、完善 UA 功能(使用 SS1B 测试)

注册 、正常呼叫、对端忙、重定向)

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

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终端(代理)

UB艾件

i

这两个API文件

再编译 osip2,eXosip2 和 osipparser2 得到

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

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

IFHlpApi LIB冷 36 KJ

2

思考题:

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

页眉内容

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

在开始一个线程的时候,就会开始一个状态机,当一个事件发生的时候,就会转到相应的 状态上去。 如sip注册:(UA)

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

I

(未收到响应)

I

空闲状态

I

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

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

UAC UAS

4、 分析SIP相关开源代码,说明

SIP消息处理的方法。

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

附录

#in elude #i nclude #i nclude #in clude #in clude /*

void cb_rcv4xx(sipeve nt_t * se,tra nsact ion_t * tr); void cb_rcv4xx(sipeve nt_t * se,tra nsact ion_t * tr) {

prin tf(\); } */ int

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

eXosip_eve nt_t *je;

osip_message_t *reg = NULL; osip_message_t *in vite = 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(\printf(\printf(\printf(\printf(\printf(\//初始化

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

{

向服务器注册 \\n\\n\取消注册 \\n\\n\发起呼叫请求 \\n\\n\挂断 \\n\\n\退出程序 \\n\\n\执行方法 INFO\\n\\n\

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

printf (\return -1;

}

else

{

printf (\

}

writefile = fopen(\

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, \

}

flag = 1; while (flag)

{

printf (\fflush(stdin);

scanf (\//getchar (); switch (command)

页眉内容

{

case 'h':

printf (\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,

\格式可以任意设

定 ,text/plain 代表文本信息 osip_message_set_content_type (info, \

eXosip_call_send_request (dialog_id, info); break; case 'm':

//传输 MESSAGE 方法 ,也就是即时消息,和 INFO 方法相比,我认为主要区别,是 MESSAGE 不用

建立连接,直接传输信息,而 INFO 必须

//在建立 INVITE 的基础上传输。 printf (\

eXosip_message_build_request (&message, \snprintf (tmp, 4096,

\

osip_message_set_body (message, tmp, strlen(tmp)); //假设格式是 xml

osip_message_set_content_type (message, \(message); break; case 'q': eXosip_quit ();

printf (\flag = 0; break; case 'r':

id=eXosip_register_build_initial_register(source_call, registerer, con,1000,®); eXosip_lock ();

eXosip_clear_authentication_info(); // 去除上次加入的错误认证信息 //添加认证信息

SIP实验报告

页眉内容南京邮电大学综合实验(软交换)SIP注册实验姓名:学号:班级:日期:2013年10月13日内容与要求:设计流程①③④熟悉环境学习协议流程(至少包括学习消息参数(请求、相应
推荐度:
点击下载文档文档为doc格式
0xslg2w5jg55t2h95x553fre38hi5501179
领取福利

微信扫码领取福利

微信扫码分享