创建 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\">" "<session party=\"first\" type=\"pc2pc\" />" "<session party=\"first\" type=\"pc2ph\" />" "<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(出于安全考虑)。
创建好友列表和观察程序对象
注册配置文件并启用出席信息后,向好友列表添加新用户将非常简单。使用 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 Interface\nErr = 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.\nErr = 0x%x", hr ); MessageBox ( szBuf ); return hr; } // 更新好友列表条目 UpdateBuddyList(pBuddy); SAFE_RELEASE(pBuddy); |
如果成功创建了新的好友,AddBuddy() 方法将返回一个指针,该指针指向新创建的好友列表中的 IRTCBuddy 接口。使用 IRTCBuddy 接口,客户端应用程序可以获取好友的出席 URI、好友名称、好友状态、永久类型以及与好友出席相关的私人数据。
取消注册和禁用配置文件
调用 IRTCClientProvisioning::DisableProfile() 方法取消注册 SIP 服务器中的用户。在调用 DisableProfile() 方法后,请务必释放配置文件对象。
优化性能
在基于 Pentium 4 处理器的系统中,后台任务要占用大量的资源。但是,应用程序的响应性能主要受其体系结构的影响。要解决此问题,需要创建一些线程,让它们并行并为其他需要立即关注的活动提供服务。在带有超线程技术和 Windows XP Service Pack 1 (SP1) 的 Pentium 4 处理器上运行多线程应用程序,能够大大改善应用程序的响应性能,并使应用程序能够更有效地执行多个任务。
Windows XP SP1 将带有超线程技术的 Pentium 4 处理器看作两个逻辑处理器,因而与单个逻辑 CPU 相比,Windows XP 可以承担两倍的工作。

图 4:使用超线程技术(左)和未使用超线程技术(右)运行的示例用户界面
图 4 说明了后台运行磁盘清理实用程序时,使用和不使用超线程技术的 Pentium 4 处理器的 CPU 使用情况对比。
小结
通过实时通信 (RTC) API,可以生成全功能的会议和协作工具,不管是从计算机到计算机、从计算机到电话还是从电话到电话的通信。在本文中,我们进一步扩展到包括出席信息和好友列表功能,以创建社区和跟踪人员的可用性。结合大量的 RTC API 和 Microsoft 实时通信服务器,您可以生成复杂、有效的协作通信工具,此工具能够增加跨站点团队的工作效率。
使用 RTC API 开发并运行在 Pentium 4 处理器(带有超线程技术和 Windows XP SP1)中的通信应用程序,在同时执行多项任务时可以实现较高的通信速度和改善的响应性能。
下载本文事例程序