1.3.1 初始化注册
为了启动注册,您需要建立一个默认的REGISTER请求,同时需要提供几个强制性的头部。
osip_message_t *reg = NULL;
int id;
int i;
eXosip_lock ();
id = eXosip_register_build_initial_register (identity, // 发送人URL
registrar, // 服务器URL
NULL,
1800, // 到期时间
®);
if (id < 0)
{
eXosip_unlock ();
return -1;
}
osip_message_set_supported (reg, "100rel");
osip_message_set_supported(reg, "path");
i = eXosip_register_send_register (id, reg); // 发送注册请求
eXosip_unlock ();
return i;
eXosip_register_build_initial_register函数的返回值为注册ID,您可以用来升级注册。在之后的关于该注册的事件中,您将会看到注册ID(如适用)。
1.3.2 升级注册
您只需要再次使用注册ID即可。
int i;
eXosip_lock ();
i = eXosip_register_build_register (id, 1800, ®);
if (i < 0)
{
eXosip_unlock ();
return -1;
}
eXosip_register_send_register (id, reg);
eXosip_unlock ();
注意:上述代码表明,协议栈有时只需要一个API函数就可以建立和发送默认的SIP消息。
1.3.3 关闭注册
当软电话终止时,它应该删除自己在服务器上的注册信息。为了实现该目的,您需要发送一个REGISTER请求,其中expires头部设置为0(即:到期时间为0)。代码和升级注册一样,只不过需要将到期时间由1800改为0。