雨疏风骤

编程/音乐/护肤/美食

  VC知识库BLOG :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  14 随笔 :: 0 文章 :: 1555 评论 :: 9 Trackbacks
<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

留言簿(112)

随笔分类

随笔档案

文章档案

相册

走过路过不要错过^_^

搜索

最新评论

阅读排行榜

评论排行榜

 

Duane Burton Sr. Technical Marketing Engineer
Intel Corporation

Jim Huang
Sr. Technical Marketing Engineer
Intel Corporation

2002年六月

应用于
Microsoft® Windows® XP

摘要: 本文介绍了怎样利用实时通信(RTC)应用编程接口(API)来实现音视频会议、应用程序共享、白板、简单的点对点聊天和音视频调节向导。RTC API提供了卓越的基于PC的通信上的革新,这可应用于所有基于Microsoft Windows XP应用程序。

下载 RTCSampleCode.zip.

目录

绪论
RTC
客户端接口
初始化
会话
处理RTC
事件
创建会话
处理实时流会话事件
关闭
会话
平台性能
结论
参考资料

绪论

微软的实时通信(RTC)应用编程接口(API)提供了显著的基于PC的通信上的革新—即时消息、音视频会议和应用程序共享/合作,这可应用于所有基于Microsoft® Windows® XP的应用程序。

使用RTCAPI来进行通信是一个非常简单的过程。
1
、客户端应用程序确定参与通信的平台的性能。
2
、应用程序选择通信中首选的视音频设备。
3
、应用程序初始化会话。
4
RTC层调整数据的获取、压缩和传输,这使得应用程序不用负责这一任务。使用哪一种音视频的编码解码器 由通信双方的连接质量决定。
5
参与会话的应用程序接受、解压并重放被传输的数据。

插图见连接:
图一、音视频会议的界面

本文描述了怎样为一个应用程序添加PC-to-PCRTC基本能力;我们假定你对使用COM对象开发Windows应用程序已经很熟悉。本文所讨论的源代码可在本文开始所给出的连接里获得。我们以后将会讨论PC-to-Phone、现场能力和XML配置。

例子代码展示了使用实时通信API实现音视频会议、应用程序共享、白板、简单的点对点聊天和音视频调节向导的基本要素。其他RTC 支持但本文没有讨论的特征有回波抵消(AEC)、前向错误校验(FEC)、 带宽估计、动态抖动缓冲管理、自动增益控制(AGC)和服务质量(QC)控制算法。在《Microsoft Windows的实时通信客户端的媒体支持》中描述了上述特征。

RTC客户端接口

所需头文件: rtccore.h

你的应用程序需要通过CoCreateInstance()来获得RTC接口CLSID_RTCClientGUID = {7a42ea29-a2b7-40c4-b091-f6f024aa89be})作为参数。一旦获得了接口,用Initialize()来初始化COM对象,以确定该平台的通信能力。

   // Initialize the RTC COM object

   hr = CoCreateInstance (CLSID_RTCClient, NULL,

      CLSCTX_INPROC_SERVER, IID_IRTCClient,

      (LPVOID *)&m_pClient);     

 

      // Initialize the client interface

hr = m_pClient->Initialize();

选择通信能力

下一步是选择首选的通信类型和相关设备(摄像机、麦克风等)。缺省配置是激活所有通信类型。如果会话的参与者能共享应用程序、传送即时消息和音视频会议,那么这些通信类型自动被激活。如果某一参与者不支持某种通信类型,那么所有的参与者都不能激活该类型。

   m_pClient->SetPreferredMediaTypes ( RTCMT_ALL, VARIANT_TRUE );

会议参与者的平台性能和可用带宽决定了使用哪一种codec

·                     视频:Windows RTC 客户端支持分辨率为QCIF176×144)的H.261H.263 codecs 这些比特率可变的codecs6125 Kbps传送视频数据。使用IRTCClient方法中的put_MaxBitRateput_TemporalSpatialTradeOff有可能会影响到视频传送的空间和瞬时清晰度。

·                     音频:Windows RTC客户端支持许多音频codec。音频codec由连接的两端共同决定。下表列出了所支持的音频codec

CODEC

取样率(kHz)

比特率(Kbps)

帧长 (msec)

G.711

8

64

20

G.722.1

16

24

20

G.723

8

6.4

30, 60, or 90

GSM

8

13

20

DVI4

8

32

20

SIREN

16

16

20, or 40

调整通信设备

选择了首选的通信类型和相关设备之后,调整通信设备。RTCAPI提供了向导对摄像机和麦克风进行调整。使用RTCClient的方法InvokeTuningWizard()可调整它们的设置。

插图见连接:
2:摄像机调节向导

3:麦克风调节向导

初始化会话

在应用程序与其他参与者连接之前,它必须能够处理会话中的RTC事件。PC-to-PC的通信中,应用程序捕获即时消息事件、音量事件、媒体事件、客户端消息事件和会话状态改变事件。下述代码展示了怎样创建一个事件过滤器来捕获RTC客户端的特定事件。

lEventMask设置了一组应用程序感兴趣的事件。(为获得全部的事件列表,可在MSDN站点搜索RTC_EVENT,这样可以获得关于每一事件的更多信息。CRTCEvents 类在客户端之间分配事件。 RTCEvents 对象在应用程序和 IRTCEventNotification接口之间创建接口。 所有的RTC事件由RTCEvents 类处理。

    // Set the event filter to listen for RTC events

    // Using RTCEF_ALL will listen for all events

    // For the sample application, we will demonstrate how to set the

    // event listener for a limited set of events.

    long lEventMask = RTCEF_SESSION_STATE_CHANGE |

                 RTCEF_MESSAGING |

                 RTCEF_MEDIA |

                 RTCEF_INTENSITY |

                 RTCEF_CLIENT;

 

    hr = m_pClient->put_EventFilter( lEventMask );

 

    // Create the event sink object

    m_pEvents = new CRTCEvents;

 

    // initialize the event handler

    hr = m_pEvents->Advise( m_pClient, m_hWnd );

 

    // Set the listen mode for RTC client

    // RTCLM_BOTH opens the standard SIP port 5060, as well as

    // a dynamic port.

    hr = m_pClient->put_ListenForIncomingSessions(RTCLM_BOTH);

音视频的媒体类型可在会话过程中添加或删除,因此客户端必须能监听这些类型的事件。在“处理实时流会话事件”这一节中可获得关于状态改变和事件处理的更多信息。

处理RTC事件

一旦事件处理者IRTCEventNotification接收器中进行了注册,接收和处理RTC事件就变得相当的容易了。当例子程序接收到RTC事件时,应用程序的事件处理者就对应用程序的消息处理者发一个消息。OnRTCEvent() 处理应用程序接收到的所有事件。

OnRTCEvent(UINT message, WPARAM wParam, LPARAM lParam)

{

 

    // Based on the RTC_EVENT type, query for the

    // appropriate event interface and call a helper

    // method to handle the event

    switch ( wParam )

    {

       ….

                ….

       ….

        case RTCE_MEDIA:

            {

                IRTCMediaEvent * pEvent = NULL;

 

                hr = pDisp->QueryInterface( IID_IRTCMediaEvent,

                                            (void **)&pEvent );

 

                if (SUCCEEDED(hr))

                {

                    OnRTCMediaEvent(pEvent);

                    SAFE_RELEASE(pEvent);

                }

            }

            break;

                ….

                ….

       ….

}

创建一个会话

当你在RTC中发起一个呼叫之前,你必须创建并且初始化一个会话。 然后你可以输入参与者的IP地址来发起一个呼叫。可可能通过属于一个e-mail 地址或者一个电话号码来激活一个会话。然而,这一功能需要一个SIP注册服务器,对它的讨论超出了本文的范围。参阅MSDN可获得关于SIP注册服务器的更多信息。

RTC目前还不支持多方视频通话,因此应用程序在初始化一个新会话之前,必须保证没有视频会议在进行。在它第一个发布版本中,Windows RTC客户端只支持多方电话会议,并不支持多方音视频会话和视频会议。

为与另一台PC通话,确定RTC会话类型并且使用IRTCSession接口创建一个同类型的会话。下列代码展示了如何创建会话。

HRESULT CAVDConfDlg::MakeCall(RTC_SESSION_TYPE enType, BSTR bstrURI)

{

    ...

 

    // Create the session

    IRTCSession * pSession = NULL;

 

    hr = m_pClient->CreateSession(enType, NULL, NULL, 0, &pSession);

 

    // Add the participant to the session

    hr = pSession->AddParticipant(bstrURI, NULL, &m_Participant);

 

    ...

    return S_OK;

}

处理实时流会话事件

根据不同的会话类型,存在媒体事件、音量事件、即时消息事件和会话状态改变事件。

媒体事件

处理媒体事件需要得到媒体类型、事件类型和原因,然后发送消息给会话窗口。应用程序可以使用get_MediaType()从视频、音频、T120和实时传输协议(RTP)事件中接收消息。例子程序展示了如何获得媒体事件并将其发送给媒体对话框去处理。

void CAVDConfDlg::OnRTCMediaEvent(IRTCMediaEvent *pEvent)

{

    ...

 

    hr = pEvent->get_MediaType(&lMediaType);

 

    hr = pEvent->get_EventType(&enType);          

   

    hr = pEvent->get_EventReason(&enReason);

 

    if ((m_AVDlg) && (m_AVDlg.GetState () != RTCSS_IDLE))

    {

        // Deliver the media state to the session window

        m_AVDlg.DeliverMedia(lMediaType, enType, enReason);

    }

}

音量事件

当扬声器或者麦克风的音量水平发生变化时产生音量事件。应用程序可使用get_Direction()函数获得发生改变的音频设备。一旦确定了设备,应用程序可获得设备的属性并处理改变。应用程序可通过slider控件来显示音量的改变,或者显示给用户一个音量表。

void CAVDConfDlg::OnRTCIntensityEvent(IRTCIntensityEvent *pEvent)

{

    ...

 

    hr = pEvent->get_Direction(&enDevice);

 

    hr = pEvent->get_Level(&lLevel);

 

    hr = pEvent->get_Min(&lMin);

 

    hr = pEvent->get_Max(&lMax);

 

    if (m_AVDlg.GetState () != RTCSS_IDLE)

    {

        // Deliver the intensity state to the session window

        m_AVDlg.DeliverIntensity(enDevice, lLevel);

    }

}

即时消息事件

使用IRTCMessagingEvent可在会话参与者中传递即时消息。当一个消息事件产生时,应用程序必须获得会话和事件类型,得到相关会话中的参与者信息,以便能将消息传递给适当一方。事件处理者也能处理会话状态的改变。

HRESULT CAVDConfDlg::OnRTCMessagingEvent(IRTCMessagingEvent *pEvent)

{

    ...

 

    hr = pEvent->get_Session(&pSession);

 

    hr = pEvent->get_EventType(&enType);

 

    hr = pEvent->get_Participant(&pParticipant);

 

    if (enType == RTCMSET_MESSAGE)

    {

        hr = pEvent->get_MessageHeader(&bstrContentType);

 

        hr = pEvent->get_Message(&bstrMessage);

 

        // Deliver the message to the session window

        if (m_cMessageDlg)

      m_cMessageDlg.DeliverMessage(pParticipant, bstrContentType,

         bstrMessage);

 

    }

    else if (enType == RTCMSET_STATUS)

    {

        hr = pEvent->get_UserStatus(&enStatus);

 

        // Deliver the user status to the session window

        m_cMessageDlg.DeliverUserStatus(pParticipant, enStatus);

    }

   return S_OK;

}

会话状态改变事件

会话状态改变事件的处理过程与其他RTC事件相同。会话状态的改变包括建立一个新的音/视频会话,或者通知客户端一个到来的即时消息。下列例子展示了当请求会话时所作的处理;客户端通过一阵铃声被通知,请求被应答,然后会话开始。

Void CAVDConfDlg::OnRTCSessionStateChangeEvent(IRTCSessionStateChangeEvent

   *pEvent)

{

    ...

 

    hr = pEvent->get_State(&enState);

 

    hr = pEvent->get_Session(&pSession);

 

    switch ( enState )

   {

   case RTCSS_INCOMING:

        {

      ...

 

            // This event is called when an incoming call occurs

            RTC_SESSION_TYPE enType;

 

            hr = pSession->get_Type(&enType);

 

            // Ring the bell

            m_pClient->PlayRing(RTCRT_PHONE, VARIANT_TRUE);

 

            // Accept the session

            hr = pSession->Answer();

         }

     }

    ...

}

应用程序共享

开启T120应用程序共享非常容易,只需调用IRTCClient 接口的StartT120Applet 方法。

hr = m_pClient->StartT120Applet ( RTCTA_APPSHARING );

白板支持

在应用程序中支持白板,需要调用StartT120Applet 方法,使用 RTCTA_WHITEBOARD 枚举作为参数。

hr = m_pClient->StartT120Applet ( RTCTA_WHITEBOARD );

关闭会话

要关闭一个会话,所有正在运行T120的应用程序必须被关闭。然后RTC 客户端接口调用ShutDown()并完成关闭会话的过程。

平台性能

使用RTC进行通信需要处理器具有适当的性能。下列例子中,一个1 GHzPentium® III处理器和一个2.2 GHzPentium 4处理器用于确定当使用RTC特征时处理器的利用率。下表描述了使用本文介绍的RTC特征时处理器的利用率。

任务

P4 处理器 at 2.2-GHz (% CPU 占用率n)1

P III 处理器 at 1.0-GHz (% CPU 占用率)2

音视频会议

9%

22%

添加程序共享(共享IE浏览器)

10%

35%

增加白板

12%

37%

增加即时

12%

37%

1 P4处理器配置:Intel®主板D850MV256MB PC800 RDRAM,主板集成声卡, nVidia* GeForce*2 Ultra; Windows XP专业版

2 P III处理器配置:Intel 主板VC820; 256MB PC133 SDRAM, nVidia* GeForce*2 Ultra, Creative* Sound Blaster* Live*, Windows XP 专业版

结论

通过使用实时通信客户端API,在Windows XP下开发通信工具已变得相当简单。开发者可迅速设计、配置和开发他们的应用程序。现有的音视频会议应用程序可通过添加RTC的丰富的通信特征而获益匪浅。使用RTC API进行开发的程序可从一个统一的通信协议中获益。这提高了你的程序与其他文本消息和音视频会议程序的互相合作的能力。将RTC APIIntel的处理器以及Microsoft Windows XP相结合,你正在传达着一种创新的通信体验。

参考资料

Intel Developer Services

Media Support in the Microsoft Windows Real-time Communications Client

Microsoft Platform SDK: Real-Time Communications Client

posted on 2005-03-17 12:19 燕七 阅读(7264) 评论(72)  编辑 收藏

评论

# re: 使用微软的实时通信API实现客户端通信 2005-05-21 15:20 视频会议
推荐一个视频会议软件 http://www.eyesom.com

# debt consolidation loan 2005-06-26 15:44 debt consolidation loan
Please check some relevant information on loans  http://www.24hours-credit.com/loans.html
 home loans  http://www.24hours-credit.com/home-loans.html
 payday loans  http://www.24hours-credit.com/payday-loans.html
 home equity loan  http://www.24hours-credit.com/home-equity-loan.html
 payday loan  http://www.24hours-credit.com/payday-loan.html
 refinance  http://www.24hours-credit.com/refinance.html
 personal loans  http://www.24hours-credit.com/personal-loans.html
 debt consolidation loan  http://www.24hours-credit.com/debt-consolidation-loan.html
 payday advance  http://www.24hours-credit.com/payday-advance.html
 credit card offers  http://www.24hours-credit.com/credit-card-offers.html
- Tons of interesdting stuff!!!

# re: 使用微软的实时通信API实现客户端通信 2005-09-14 11:01 视频会议
怎么都看不到图啊?真的想学学怎么调麦克风啊!:(
视频会议软件供应商视高科技为您提供专业的软件视频会议系统整体解决方案。
为基于网络的即时协作提供 全方位的技术平台,全面支持软件视频会议系统、企业协同办公、P2P视频通话、USB电话、 文件共享、屏幕共享、程序共享、远程控制、网络会议、网络视频会议等功能,为我们步入网络企业提供全面支持.
推荐一个网络视频会议软件:[URL="http://www.eyesom.com/"]视频会议/视频会议系统[/URL] 


# re: 使用微软的实时通信API实现客户端通信 2005-09-14 17:15 视频会议
你的网址好像错了吧!
推荐一个网络视频会议软件:[URL=" http://www.eyesom.com/ "]视频会议/视频会议系统[/URL] 


# re: 使用微软的实时通信API实现客户端通信 2005-09-27 10:32 http://www.v2conference.com/hydraulicvalves
http://www.v2conference.com/hydraulicvalves

# re: 使用微软的实时通信API实现客户端通信 2005-09-27 10:32 http://www.v2conference.com/magnet
http://www.v2conference.com/magnet

# re: 使用微软的实时通信API实现客户端通信 2005-09-27 10:32 http://www.v2conference.com/microtorch
http://www.v2conference.com/microtorch

# re: 使用微软的实时通信API实现客户端通信 2005-09-27 10:32 http://www.v2conference.com/butanetorch
http://www.v2conference.com/butanetorch

# re: 使用微软的实时通信API实现客户端通信 2005-09-27 10:32 http://www.v2conference.com/playingcard
http://www.v2conference.com/playingcard

# re: 使用微软的实时通信API实现客户端通信 2005-09-27 10:33 http://www.v2conference.com/playingcard
http://www.v2conference.com/playingcard

# re: 使用微软的实时通信API实现客户端通信 2005-10-10 17:01 morphine
我试过这个例子,但是视频会议没有成功,而且在初始化视频/音频(就是点AV TUNING那个按钮)时并没有出现视频的初始化,只出现了麦克风和声音的调节,请问怎么回事,盼答复,谢谢

# re: 使用微软的实时通信API实现客户端通信 2005-10-15 00:26 小華
Hi, all.
I have a codec and make it to an ACM format.
Could you tell me how to install it to RTC(Real-Time Communication)
and the codec can run well in RTC?
Making a codec to ACM format need to take notice of some details?
Please teach me how to do.
Thanks all.


# re: 使用微软的实时通信API实现客户端通信 2005-11-08 16:55 esako
5555,缺个rtccore.h头文件啊!
能发个给我吗?我的email是mingrunsoft@yahoo.com.cn
谢谢哈

# re: 使用微软的实时通信API实现客户端通信 2007-07-13 11:02 不耻下问
请教:如何避开视频会议的创建
      只需要程序共享的功能  必须要建立会话吗
      建立其他连接可以不可以
      拜求  qq:47652863
         望有了解的高手给与指教   不胜感激

# re: 使用微软的实时通信API实现客户端通信 2007-08-07 17:06 hour meter
www.china-hourmeter.com

# re: 使用微软的实时通信API实现客户端通信 2007-08-07 17:06 trade suppliers
交易网

# re: 使用微软的实时通信API实现客户端通信 2007-08-07 17:13 made in ningbo
gfdgesr

# re: 使用微软的实时通信API实现客户端通信 2007-08-07 17:20 51netphone
uihfj

# re: 使用微软的实时通信API实现客户端通信 2007-08-07 17:23 v2conference
hijfu

# re: 使用微软的实时通信API实现客户端通信 2007-08-07 17:25 China Sports Item
体育用品

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:41 casting
铸件

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:41 Auto Carpet
汽车内饰

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:43 Auto Exhaust Manifold
汽车

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:43 Auto metal Appliances
汽车相关

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:44 Auto Parts Manufacturers
汽车部件

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:46 Bathroom
浴室用品

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:46 Mosquito nets
蚊帐

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:47 Lifting Anchor
建筑锚件 

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:48 Cosmetic
化妆品

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:48 Elevator Geared Traction Machine
电机

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:49 International Logistics
颠三倒四

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:50 LED work light
电灯

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:50 Id Bracelets
医疗器材及汽车配件

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:51 pen
各种圆珠笔

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:52 corner protection
塑料护品

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:52 UL power cord
UL插头

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:55 power cords
各种规格插头

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:56 o-rings
O型环,及各种螺丝,锚件

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:57 Sandals
凉鞋,沙滩鞋,各种鞋

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:57 Shower room
淋浴套件

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:58 Socks
袜子,各种成人及儿童袜子

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:58 welding wire
焊锡丝,焊锡棒

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:59 Ball Bearings
各种轴承

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 08:59 Phonebooth
电话亭,吸烟亭,各种亭子

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 09:00 Trolling motor
运输

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 09:00 China Trade Manufacturers
分类目录,商业供应

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 09:01 car mat
汽车内饰

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 09:02 Desk Lamp
灯具

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 09:02 Chinese Antique Furniture
明清家具

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 09:03 Purse Brite
家居用品

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 09:04 Packing
包装

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 09:04 chinese furniture
家具

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 09:04 Ball Valve
铜阀

# re: 使用微软的实时通信API实现客户端通信 2007-08-09 09:06 宁波摄影
宁波摄影

# 请问为什么没有图? 2007-08-27 19:26 hope
请问为什么没有图?

p.s. 为什么这么多垃圾留言

# re: 使用微软的实时通信API实现客户端通信 2007-09-07 10:56 caicai
先是提示没有rtccore.h.我下了rtcapisdk后又出现\rtcsample\rtccore.h(5668) : error C2061: syntax error : identifier 'LONG_PTR'这种错误,这是为什么啊?

# re: 使用微软的实时通信API实现客户端通信 2007-12-19 12:58 ball bearing
ball bearing    http://www.bearing-fastener.com/

# re: 使用微软的实时通信API实现客户端通信 2008-06-01 21:08 zxcsad
 躺倒在地上的巫山翻动了两下眼皮,然后缓缓睁开了双眼。林泉紧张地看着长老的反应,叫他稍稍心安的是,巫山眼中可怖的绿芒已经散去[url=http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn]google推广[/url],重新恢复了以前的清明。
  巫山晃晃脑袋,此刻,他感觉昏昏沉沉的,说不出的虚弱和难受。看到林泉瞪着大眼睛看着自己,巫山不由出声询问道:“怎么了?”
  林泉的心中一喜:长老终于恢复了神智[url=http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn]google左侧代理[/url],看来,不会有什么大碍。这时[url=http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn]google代理[/url]火鲁鲁也凑了过来,上上下下打量了巫山一番,心有余悸地说道:“巫山长老,你刚才可是吓死人了,简直就和妖魔一族一样。”
  巫山努力在脑中回想了一下[url=http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn">http://www.google0808.cn]google排名[/url]但是,脑子里却是一片空白,仿佛那段记忆,已经完全消失。于是,他就挣扎着想要站起来,立刻,钻心的疼痛从两腿上传

# re: 使用微软的实时通信API实现客户端通信 2008-07-30 16:34 leisure-articles
http://www.leisure-articles.com
http://www.nbledlight.com

# re: 使用微软的实时通信API实现客户端通信 2008-09-09 21:30 成都租车
路过

# re: 使用微软的实时通信API实现客户端通信 2008-09-12 14:30 czwzf010
czwzf010
czwzhufeng
<a href=http://www.mygamestock.com>wow gold</a>
<a href=http://www.jdcf168.com.cn>股票软件</a>
<a href=http://www.pumppump.cn>螺杆泵</a>
<a href=http://www.pumppump.cn>油泵</a>
<a href=http://www.pumppump.cn>隔膜泵</a>
<a href=http://www.jdcf168.com.cn>黑马股</a>
<a href=http://blog.tom.com/xufang>股票软件</a> 
<a href=http://blog.titan24.com/blog.php?uid=143847>螺杆泵</a>
<a href=http://justsoso1212.blog.sohu.com>油泵</a>
<a href=http://blog.szhk.com/blog.php?uid=321>黑马股</a>
<a href=http://blog.zhue.com.cn/blog.php?uid=1270>隔膜泵</a>

# re: 使用微软的实时通信API实现客户端通信 2009-05-27 14:37 11
http://www.cf8.com.cn/
<a href=http://www.cf8.com.cn/adtopview.html>赢富数据</a>
<a href=http://www.cf8.com.cn/adgpfxrj.html>股票分析软件</a>
<a href=http://www.cf8.com.cn/addzh.html>大智慧</a>
<a href=http://www.cf8.com.cn/adths.html>同花顺</a>
<a href=http://www.cf8.com.cn/adgphq.html>股票行情软件</a>
<a href=http://www.cf8.com.cn/adgprj.html>股票软件</a>
<a href=http://www.cf8.com.cn/adcgrj.html>炒股软件</a>
<a href=http://www.cf8.com.cn/adtopview.html>TopView</a>
<a href=http://www.cf8.com.cn/adtopview.html>超赢数据</a>
<a href=http://bbs.cf8.com.cn/>股票论坛</a>
<a href=http://bbs.cf8.com.cn/>财经论坛</a> 
<a href=http://www.cf8.com.cn/adtdx.html>通达信</a>
<a href=http://www.cf8.com.cn/adql.html>钱龙</a>
<a href=http://www.cf8.com.cn/adzqzx.html>证券之星</a>
<a href=http://www.cf8.com.cn/adznz.html>指南针</a>
<a href=http://www.cf8.com.cn/adgpzs.html>股票知识</a> 

标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]