微软实时通信API多客户端通信实战(3)

VP9F7Q

VP9F7Q

2016-02-19 12:58

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是微软实时通信API多客户端通信实战(3),一起来学习了解下吧!

创建 XML 配置文件

  以下代码演示如何创建 XML 配置文件字符串。

HRESULT CSIPLogin::CreateXMLProvision(LPSTR szURI, LPSTR szSIPIP,
LPSTR szTransport, BSTR *bstrBuf)
{
... .

// 生成 XML 装置文档
wsprintf(szBuf, "<provision key="AVDConf_2" name="AVDConf_2">"
"<user uri="%s" account="" password="" realm="%s" />"
"<sipsrv addr="%s" protocol="%s" %s role="proxy">"
"<&&keyword=session&Submit=+%CB%D1%CB%F7+"session party="first" type="pc2pc" />"
"<&&keyword=session&Submit=+%CB%D1%CB%F7+"session party="first" type="pc2ph" />"
"<&&keyword=session&Submit=+%CB%D1%CB%F7+"session party="first" type="im" />"
"</sipsrv>"
"<sipsrv addr="%s" protocol="%s" %s role="registrar"/>"
"</provision>",
szURIBuf, szRealm,
szSIPIP, szTransport, bBasicAuth ? "auth="basic"" : "",
szSIPIP, szTransport, bBasicAuth ? "auth="basic"" : ""
);

... .

return S_OK;
}
 
  在本文前面显示的示例应用程序和代码片段中,无须包括帐户用户 ID 和密码,因为 SIP 服务器不需要它。但是,如果知道 SIP 服务器需要登录帐户,则可以在配置文件字符串中包括用户 ID 和密码,以便登录到 SIP 服务器。注册需要的信息包括用户的统一资源标识符 (URI)、领域或域、RTC 服务器 IP、验证方法以及用于与服务器通信的传输协议。支持的传输协议包括 TCP、UDP 和 TLS。使用的 SIP 服务器同时支持“基本”和“摘要”身份验证。如果是“基本”身份验证,则传输协议必须是 TLS(出于安全考虑)。

  创建好友列表和观察程序对象

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  注册配置文件并启用出席信息后,向好友列表添加新用户将非常简单。使用 IRTCClientPresence &&接口(提供启用出席的方法)、添加好友、删除好友、枚举观察程序、设置本地出席状态、确定应用程序处理新观察程序中订阅的方法以及设置隐私模式。本示例代码未演示如何实现隐私模式,但值得注意的是,通过该功能用户可以创建一个允许呼叫的用户的离散列表。


// 获取 RTC 客户端出席信息&&接口

IRTCClientPresence * pPresence = NULL;

hr = m_pClient->QueryInterface(
IID_IRTCClientPresence,
(void **)&pPresence);

if (FAILED(hr))
{
// QueryInterface 失败
char szBuf[256];

wsprintf (szBuf, "Failed to Query Presence InterfaceErr = 0x%x", hr );
MessageBox ( szBuf );
return hr;
}

// 添加好友
IRTCBuddy * pBuddy = NULL;

hr = pPresence->AddBuddy(
bstrURI,
bstrName,
NULL,
VARIANT_TRUE,
NULL,
0,
&pBuddy);

SAFE_RELEASE(pPresence);

if (FAILED(hr))
{
// Addbuddy 失败
SAFE_RELEASE(pBuddy);
char szBuf[256];

wsprintf (szBuf, "Failed to Add Buddy to List.Err = 0x%x", hr );
MessageBox ( szBuf );
return hr;
}

// 更新好友列表条目
UpdateBuddyList(pBuddy);
SAFE_RELEASE(pBuddy);
 


  如果成功创建了新的好友,AddBuddy() 方法将返回一个&&keyword=%D6%B8%D5%EB&Submit=+%CB%D1%CB%F7+"指针,该&&keyword=%D6%B8%D5%EB&Submit=+%CB%D1%CB%F7+"指针指向新创建的好友列表中的 IRTCBuddy &&接口。使用 IRTCBuddy &&接口,客户端应用程序可以获取好友的出席 URI、好友名称、好友状态、永久类型以及与好友出席相关的私人数据。

  取消注册和禁用配置文件

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  调用 IRTCClientProvisioning::DisableProfile() 方法取消注册 SIP 服务器中的用户。在调用 DisableProfile() 方法后,请务必释放配置文件对象。

  优化性能

  在基于 Pentium 4 处理器的系统中,后台任务要占用大量的资源。但是,应用程序的响应性能主要受其体系结构的影响。要解决此问题,需要创建一些线程,让它们并行并为其他需要立即关注的活动提供服务。在带有超线程技术和 Windows XP Service Pack 1 (SP1) 的 Pentium 4 处理器上运行多线程应用程序,能够大大改善应用程序的响应性能,并使应用程序能够更有效地执行多个任务。

  Windows XP SP1 将带有超线程技术的 Pentium 4 处理器看作两个逻辑处理器,因而与单个逻辑 CPU 相比,Windows XP 可以承担两倍的工作。

微软实时通信API多客户端通信实战(3)
图 4:使用超线程技术(左)和未使用超线程技术(右)运行的示例用户界面

  图 4 说明了后台运行磁盘清理实用程序时,使用和不使用超线程技术的 Pentium 4 处理器的 CPU 使用情况对比。

  小结

  通过实时通信 (RTC) API,可以生成全功能的会议和协作工具,不管是从计算机到计算机、从计算机到电话还是从电话到电话的通信。在本文中,我们进一步扩展到包括出席信息和好友列表功能,以创建社区和跟踪人员的可用性。结合大量的 RTC API 和 Microsoft 实时通信服务器,您可以生成复杂、有效的协作通信工具,此工具能够增加跨站点团队的工作效率。

  使用 RTC API 开发并运行在 Pentium 4 处理器(带有超线程技术和 Windows XP SP1)中的通信应用程序,在同时执行多项任务时可以实现较高的通信速度和改善的响应性能。

展开更多 50%)
分享

猜你喜欢

微软实时通信API多客户端通信实战(3)

编程语言 网络编程
微软实时通信API多客户端通信实战(3)

微软实时通信API多客户端通信实战(1)

编程语言 网络编程
微软实时通信API多客户端通信实战(1)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

微软实时通信API多客户端通信实战(2)

编程语言 网络编程
微软实时通信API多客户端通信实战(2)

Android 进程间通信实现原理分析

编程语言 网络编程
Android 进程间通信实现原理分析

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

使用Oracle实现实时通信

电脑网络
使用Oracle实现实时通信

Zune 客户端

平面设计 标志设计 UI设计 VI设计
Zune 客户端

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

『VC++技术内幕』学习笔记(8)

『VC++技术内幕』学习笔记(8)

ajax不错的应用

ajax不错的应用
下拉加载更多内容 ↓