• 墨玉县发展农村电商破解脱贫难题 2019-07-15
  • 晋中市通报五起违反中央八项规定精神问题 2019-07-14
  • 五月呼声报告: 陕11家单位上黑榜 官方回复房产投诉满意度低 2019-07-14
  • 高明农家乐地图出炉 教你玩出新花样清凉乐翻天 2019-07-13
  • 超出你想象  大胡子“绣郎”斩获刺绣界“奥斯卡”  2019-07-10
  • 澳媒:亚洲人别来了?悉尼再现种族歧视海报 2019-07-03
  • 为丰富百姓餐桌提供更多选择(打开对外开放新局面) 2019-07-03
  • 爬窗户干瞪眼  云南文山一小区惊现倭蜂猴 2019-07-02
  • 以古鉴今,习近平多次提及屈原 2019-07-02
  • 统一标尺严把关口 防止留置权滥用 2019-06-28
  • 四川医疗巡诊走进松潘为在乡优抚对象送健康 2019-06-25
  • 人民网驻乌克兰记者报道集 2019-06-23
  • 十九大代表杨峰:解决市民身边小事 汇集成民生大事 2019-06-23
  • 浙江舟山定海区一国企非党管理人员涉嫌受贿被查 2019-06-22
  • 中共中央组织部“12380”举报网站 2019-06-19
  • Jquery中文网 南粤风采36选7开奖公告 www.77402m.com
    Jquery中文网 >  脚本编程  >  C语言  >  正文 VC 6 RTP流媒体传输协议编程实例(

    福建体彩31选7走势图表:VC 6 RTP流媒体传输协议编程实例(

    发布时间:2018-11-20   编辑:南粤风采36选7开奖公告 www.77402m.com
    jquery中文网为您提供VC 6 RTP流媒体传输协议编程实例(等资源,欢迎您收藏本站,我们将为您提供最新的VC 6 RTP流媒体传输协议编程实例(资源
    <script>ec(2);</script>
    资源下载:
    //download.111cn.net/source/444512

    实时流协议RTSP(RealTimeStreamingProtocol)是由RealNetworks和 Netscape共同提出的,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP(实时传输)和RTCP(实时控制)之上,它使用 TCP或RTP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTP传送的是多媒体数据。HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。

    实时流协议(RTSP)是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频,的受控、点播成为可能。

    RTP是目前解决流媒体实时传输问题的最好办法,如果要开发,可以选择JRTPLIB库。JRTPLIB是一个面向对象的RTP库,它完全遵循RFC 1889设计。JRTPLIB是一个用C 语言实现的RTP库,目前已经可以运行在Windows、Linux、FreeBSD、Solaris、Unix和 VxWorks等多种操作系统上。

    了解更多RTP参考:
    //www.cnitblog.com/zouzheng/archive/2008/01/04/38449.html

    下面的例子参考jrtplib的example1,加了解析负载的部分。


    <span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> RTPClient.cpp : Defines the entry point for the console application.
    </span><span style="color: rgb(0, 128, 0);">//
    </span><span style="color: rgb(0, 0, 0);">#include </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">stdafx.h</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">rtpsession.h</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">rtppacket.h</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">rtpudpv4transmitter.h</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">rtpipv4address.h</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">rtpsessionparams.h</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">rtperrors.h</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 0);">winsock2.h</span><span style="color: rgb(0, 0, 0);">></span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 0);">stdlib.h</span><span style="color: rgb(0, 0, 0);">></span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 0);">stdio.h</span><span style="color: rgb(0, 0, 0);">></span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">windows.h</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 0);">iostream</span><span style="color: rgb(0, 0, 0);">></span><span style="color: rgb(0, 0, 0);">
    #include </span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">></span><span style="color: rgb(0, 0, 0);">
    </span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">   </span><span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);">   std;
    </span><span style="color: rgb(0, 0, 255);">#pragma</span><span style="color: rgb(0, 0, 0);"> comment(lib,"jrtplib.lib")</span><span style="color: rgb(0, 0, 0);">
    </span><span style="color: rgb(0, 0, 255);">#pragma</span><span style="color: rgb(0, 0, 0);"> comment(lib,"jthread.lib")</span><span style="color: rgb(0, 0, 0);">
    </span><span style="color: rgb(0, 0, 255);">#pragma</span><span style="color: rgb(0, 0, 0);"> comment(lib,"WS2_32.lib")</span><span style="color: rgb(0, 0, 0);">

    </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> checkerror(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> rtperr)
    </span><span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255); display: none;" id="_534_639_Closed_Text">...</span><span id="_534_639_Open_Text"><span style="color: rgb(0, 0, 0);">{
        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (rtperr </span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">)
        </span><span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255); display: none;" id="_554_637_Closed_Text">...</span><span id="_554_637_Open_Text"><span style="color: rgb(0, 0, 0);">{
            std::cout </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ERROR: </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> RTPGetErrorString(rtperr) </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> std::endl;
            exit(</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">);
        }</span></span><span style="color: rgb(0, 0, 0);">
    }</span></span><span style="color: rgb(0, 0, 0);">

    </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> main(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> argc, </span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> argv[])
    </span><span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255); display: none;" id="_675_3391_Closed_Text">...</span><span id="_675_3391_Open_Text"><span style="color: rgb(0, 0, 0);">{
    #ifdef WIN32
        WSADATA dat;
        WSAStartup(MAKEWORD(</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">),</span><span style="color: rgb(0, 0, 0);">&</span><span style="color: rgb(0, 0, 0);">dat);
    </span><span style="color: rgb(0, 0, 255);">#endif</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> WIN32</span><span style="color: rgb(0, 0, 0);">
        
        RTPSession sess;
        uint16_t portbase,destport;
        uint32_t destip;
        std::</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);"> ipstr;
        </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> status,i,num;

        BYTE </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">pBuffer;
        BYTE </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">pfBuffer;

        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">输入一些必要信息</span><span style="color: rgb(0, 128, 0);">
    </span><span style="color: rgb(0, 0, 0);">    std::cout </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Enter local portbase:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> std::endl;
        std::cin </span><span style="color: rgb(0, 0, 0);">>></span><span style="color: rgb(0, 0, 0);"> portbase;
        std::cout </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> std::endl;
        
        std::cout </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Enter the destination IP address</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> std::endl;
        std::cin </span><span style="color: rgb(0, 0, 0);">>></span><span style="color: rgb(0, 0, 0);"> ipstr;
        destip </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> inet_addr(ipstr.c_str());
        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (destip </span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);"> INADDR_NONE)
        </span><span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255); display: none;" id="_1156_1228_Closed_Text">...</span><span id="_1156_1228_Open_Text"><span style="color: rgb(0, 0, 0);">{
            std::cerr </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Bad IP address specified</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> std::endl;
            </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;
        }</span></span><span style="color: rgb(0, 0, 0);">
        
        destip </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> ntohl(destip);
        
        std::cout </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Enter the destination port</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> std::endl;
        std::cin </span><span style="color: rgb(0, 0, 0);">>></span><span style="color: rgb(0, 0, 0);"> destport;
        
        std::cout </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> std::endl;
        std::cout </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Number of packets you wish to be sent:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> std::endl;
        std::cin </span><span style="color: rgb(0, 0, 0);">>></span><span style="color: rgb(0, 0, 0);"> num;
        
        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 创建RTP session</span><span style="color: rgb(0, 128, 0);">
    </span><span style="color: rgb(0, 0, 0);">    RTPUDPv4TransmissionParams transparams;
        RTPSessionParams sessparams;
        
        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> IMPORTANT: The local timestamp unit MUST be set, otherwise
        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">            RTCP Sender Report info will be calculated wrong
        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> In this case, we''ll be sending 10 samples each second, so we''ll
        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> put the timestamp unit to (1.0/10.0)</span><span style="color: rgb(0, 128, 0);">
    </span><span style="color: rgb(0, 0, 0);">    sessparams.SetOwnTimestampUnit(</span><span style="color: rgb(0, 0, 0);">1.0</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">10.0</span><span style="color: rgb(0, 0, 0);">);        
        
        sessparams.SetAcceptOwnPackets(</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">);
        transparams.SetPortbase(portbase);
        status </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> sess.Create(sessparams,</span><span style="color: rgb(0, 0, 0);">&</span><span style="color: rgb(0, 0, 0);">transparams);    
        checkerror(status);
        
        RTPIPv4Address addr(destip,destport);
        
        status </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> sess.AddDestination(addr);
        checkerror(status);
        
        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> (i </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);"> ; i </span><span style="color: rgb(0, 0, 0);"><=</span><span style="color: rgb(0, 0, 0);"> num ; i</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">)
        </span><span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255); display: none;" id="_2108_3294_Closed_Text">...</span><span id="_2108_3294_Open_Text"><span style="color: rgb(0, 0, 0);">{
            printf(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> Sending packet %d/%d </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,i,num);
            
            </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 发送数据“1234567890”</span><span style="color: rgb(0, 128, 0);">
    </span><span style="color: rgb(0, 0, 0);">        status </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> sess.SendPacket((</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">1234567890</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">);
            checkerror(status);
            
            sess.BeginDataAccess();
            
            </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> check incoming packets</span><span style="color: rgb(0, 128, 0);">
    </span><span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (sess.GotoFirstSourceWithData())
            </span><span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255); display: none;" id="_2365_3127_Closed_Text">...</span><span id="_2365_3127_Open_Text"><span style="color: rgb(0, 0, 0);">{
                </span><span style="color: rgb(0, 0, 255);">do</span><span style="color: rgb(0, 0, 0);">
                </span><span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255); display: none;" id="_2376_3084_Closed_Text">...</span><span id="_2376_3084_Open_Text"><span style="color: rgb(0, 0, 0);">{
                    RTPPacket </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">pack;
                    
                    </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);"> ((pack </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> sess.GetNextPacket()) </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> NULL)
                    </span><span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255); display: none;" id="_2458_3079_Closed_Text">...</span><span id="_2458_3079_Open_Text"><span style="color: rgb(0, 0, 0);">{
                        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> You can examine the data here</span><span style="color: rgb(0, 128, 0);">
    </span><span style="color: rgb(0, 0, 0);">                    printf(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Got packet ! </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);

                        std::cout </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Got packet with </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> 
                            </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">extended sequence number </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> 
                            </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> pack</span><span style="color: rgb(0, 0, 0);">-></span><span style="color: rgb(0, 0, 0);">GetExtendedSequenceNumber() 
                            </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> from SSRC </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> pack</span><span style="color: rgb(0, 0, 0);">-></span><span style="color: rgb(0, 0, 0);">GetSSRC() 
                            </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> std::endl;
                        
                        </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> dataLength </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> pack</span><span style="color: rgb(0, 0, 0);">-></span><span style="color: rgb(0, 0, 0);">GetPayloadLength();
                        pfBuffer </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">(unsigned </span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">)pack</span><span style="color: rgb(0, 0, 0);">-></span><span style="color: rgb(0, 0, 0);">GetPayloadData();
                        pBuffer </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> BYTE[dataLength </span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">];
                        memcpy(pBuffer, pfBuffer, dataLength);
                        pBuffer[dataLength] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;
                        std::cout </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> pBuffer </span><span style="color: rgb(0, 0, 0);"><<</span><span style="color: rgb(0, 0, 0);"> std::endl;
                        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> we don''t longer need the packet, so
                        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> we''ll delete it</span><span style="color: rgb(0, 128, 0);">
    </span><span style="color: rgb(0, 0, 0);">                    sess.DeletePacket(pack);
                    }</span></span><span style="color: rgb(0, 0, 0);">
                }</span></span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);"> (sess.GotoNextSourceWithData());
            }</span></span><span style="color: rgb(0, 0, 0);">
            
            sess.EndDataAccess();

    #ifndef RTP_SUPPORT_THREAD
            status </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> sess.Poll();
            checkerror(status);
    </span><span style="color: rgb(0, 0, 255);">#endif</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> RTP_SUPPORT_THREAD</span><span style="color: rgb(0, 0, 0);">
            
            RTPTime::Wait(RTPTime(</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">));
        }</span></span><span style="color: rgb(0, 0, 0);">
        
        sess.BYEDestroy(RTPTime(</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">),</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">);

    #ifdef WIN32
        WSACleanup();
    </span><span style="color: rgb(0, 0, 255);">#endif</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> WIN32</span><span style="color: rgb(0, 0, 0);">
        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;
    }</span></span>
    编译注意修改每个Source File的code generation下的Use run-time library为Debug Multithreaded DLL。
    如图



    关于jrtplib的环境,可以参考网上很多的资料,也可以从我的资源里下载,我已经编译好了相关lib,只要加的VC环境里就可以了。

    执行测试程序的效果如下:
    Enter local portbase:
    8000
    Enter the destination IP address
    127.0.0.1
    Enter the destination port
    8000
    Number of packets you wish to be sent:
    5

    Sending packet 1/5
    Got packet !
    Got packet with extended sequence number 59262 from SSRC 3029241192
    1234567890

    Sending packet 2/5
    Got packet !
    Got packet with extended sequence number 59263 from SSRC 3029241192
    1234567890

    Sending packet 3/5

    Sending packet 4/5
    Got packet !
    Got packet with extended sequence number 59264 from SSRC 3029241192
    1234567890
    Got packet !
    Got packet with extended sequence number 59265 from SSRC 3029241192
    1234567890

    Sending packet 5/5

    上面执行的意思是程序自己开了8000端口,然后往自己的8000发送,所以不仅发送出去,还收到并解析出了内容。如果要往另外机器上发,另一个机器上也运行这个程序就可以了。当然可以专门再写一个接收端。
    [关闭]
  • 墨玉县发展农村电商破解脱贫难题 2019-07-15
  • 晋中市通报五起违反中央八项规定精神问题 2019-07-14
  • 五月呼声报告: 陕11家单位上黑榜 官方回复房产投诉满意度低 2019-07-14
  • 高明农家乐地图出炉 教你玩出新花样清凉乐翻天 2019-07-13
  • 超出你想象  大胡子“绣郎”斩获刺绣界“奥斯卡”  2019-07-10
  • 澳媒:亚洲人别来了?悉尼再现种族歧视海报 2019-07-03
  • 为丰富百姓餐桌提供更多选择(打开对外开放新局面) 2019-07-03
  • 爬窗户干瞪眼  云南文山一小区惊现倭蜂猴 2019-07-02
  • 以古鉴今,习近平多次提及屈原 2019-07-02
  • 统一标尺严把关口 防止留置权滥用 2019-06-28
  • 四川医疗巡诊走进松潘为在乡优抚对象送健康 2019-06-25
  • 人民网驻乌克兰记者报道集 2019-06-23
  • 十九大代表杨峰:解决市民身边小事 汇集成民生大事 2019-06-23
  • 浙江舟山定海区一国企非党管理人员涉嫌受贿被查 2019-06-22
  • 中共中央组织部“12380”举报网站 2019-06-19
  • 广东36选7色谱走势图 北京pk10每天赚一千 麻将作弊手段 极速十一选五是谁开的 解094期于海滨推荐号码 排列三开机号p3开机号试机号 期特码免费公开 四川快乐12胆拖计算表 香港一尾中特平 双色球中1胆没中蓝球 20选5必中技巧 上海时时乐全天计划 体育彩票超级大乐透开奖结果 今天特码资料 山东11选5网易