自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (11)
  • 收藏
  • 关注

转载 C++中引用(&)的用法和应用实例

对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的。引用是C++引入的新语言特性,是C++常用的一个重要内容之

2014-04-09 08:46:20 451

原创 MFC多个控件在对话框上的大小变化

对话框中多个控件随窗体大小变化:在类中加成员函数和成员变量:         void SetControlInfo(WORD CtrlId);  protected: int m_nCx, m_nCy; CDWordArray m_ctlInfo;    构造函数中初始化:

2014-03-14 22:41:07 986

转载 MFC 多线程总结

(一) MFC对多线程编程的支持             MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。          工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外 的用户输入,响应用户及系

2014-02-11 09:47:30 621

原创 UDP协议及包格式

UDP协议的主要特点UDP是一种无连接的、不可靠的传输层协议;在完成进程到进程的通信中提供了有限的差错检验功能;设计比较简单的UDP协议的目的是希望以最小的开销来达到网络环境中的进程通信目的;进程发送的报文较短,同时对报文的可靠性要求不高,那么可以使用UDP协议。UDP的基本工作过程UDP用户数据报传输过程中的封装与拆封 UDP报文传输队列UDP的复

2014-01-02 13:47:46 845

转载 __declspec(dllexport) & __declspec(dllimport)

__declspec(dllexport)声明一个导出函数,是说这个函数要从本DLL导出。我要给别人用。一般用于dll中 省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类__declspec(dllimport)声明一个导入函数,是说这个函数

2013-11-16 10:39:55 633

原创 CreateProcess执行一个控制台程序,隐藏窗口

STARTUPINFO   StartupInfo;//创建进程所需的信息结构变量   PROCESS_INFORMATION   ProcessInfo;     GetStartupInfo(&StartupInfo);    StartupInfo.lpReserved=NULL;    StartupInfo.lpDesktop=NULL;    StartupIn

2013-11-15 15:24:26 3160

原创 心跳包

用来判断对方(设备,进程或其它网元)是否正常运行,采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经离线。用于检测TCP的异常断开。基本原因是服务器端不能有效的判断客户端是否在线,也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况。所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一

2013-11-13 17:23:36 734

转载 MFC获取本机IP地址

获取本机IP地址 CString sLoginUser;CString sLocalIP;WORD wVersionRequested;WSADATA wsaData;wVersionRequested = MAKEWORD( 2, 0 ); if ( WSAStartup( wVersionRequested, &wsaData ) == 0 ){ sLoginUse

2013-11-11 17:25:19 1484

原创 全屏方案

void CDemoPlay::OnLButtonDblClk(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CRect rect;  for (int i = 0; i  {  plans[i].GetWindowRect(rec

2013-11-04 19:33:36 531

转载 流媒体方案

首先看下项目需求:   1.最多同时支持16路音视频同时显示。   2.窗口模式,全屏,1窗口,4窗口,9窗口,16窗口。   3.播放控制,开始播放,停止播放,开启音频,停止音频,云台控制,Camera管理。  下面谈谈设计方案:  1.总体设计,按照码流数据流向,可以将系统分成三层:   网络层,负责码流的接收,数据的解包,以及网络故障的处理。   解码

2013-11-04 19:32:13 718

原创 在VC++中读写INI文件

在VC++中读写INI文件  在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下:一.将信息写入.INI文件中.       1.所用的WINAPI函数原型为:BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR

2013-10-24 08:43:31 464

原创 CString的多种初始化

1.直接将字符串赋值给CString对象代码如下:CString str1=“songxiwei”;2.通过构造函数初始化代码如下:CString str2(' ',100);预分配100字节,填充空格3.加载工程中字符串资源代码如下:CString str3;sr3.LoadString(IDS_STR);4.使用CString类的成员函数Format初始

2013-10-23 15:43:03 3797

转载 Windows服务编写原理及探讨(四)

(四)一些问题的讨论  前面几章的内容都是服务的一些通用的编写原理,但里面隐含着一些问题,编写简单的服务时看不出来,但遇到复杂的应用就会出现一些问题,所以本章就是用来分析、解决这些问题的,适用于高级应用的开发人员。我这一章的内容都是经过实验得到的,很有实际意义。   我在第一章里面就说过,是由一个服务的主线程执行CtrlHandler函数,它将收到各种控制命令,但是真正处理命令,执

2013-10-21 17:32:39 776

转载 Windows服务编写原理及探讨(三)

(三)对服务的深入讨论之下  现在我们还剩下一个函数可以在细节上讨论,那就是服务的CtrlHandler函数。  当调用RegisterServiceCtrlHandler函数时,SCM得到并保存这个回调函数的地址。一个SCP调一个告诉SCM如何去控制服务的Win32函数,现在已经有10个预定义的控制请求:Control codeMeaning

2013-10-21 17:31:42 711

转载 Windows服务编写原理及探讨(二)

(二)对服务的深入讨论之上  上一章其实只是概括性的介绍,下面开始才是真正的细节所在。在进入点函数里面要完成ServiceMain的初始化,准确点说是初始化一个 SERVICE_TABLE_ENTRY结构数组,这个结构记录了这个服务程序里面所包含的所有服务的名称和服务的进入点函数,下面是一个 SERVICE_TABLE_ENTRY的例子:SERVICE_TABLE_ENTRY se

2013-10-21 17:30:34 880

转载 Windows服务编写原理及探讨(一)

有那么一类应用程序,是能够为各种用户(包括本地用户和远程用户)所用的,拥有用户授权级进行管理的能力,并且不论用户是否物理的与正在运行该应用程序的计算机相连都能正常执行,这就是所谓的服务了。(一)服务的基础知识Question 1. 什么是服务?它的特征是什么?  在NT/2000中,服务是一类受到操作系统优待的程序。一个服务首先是一个Win32可执行程序,如果要写一个功能完备且强大的服

2013-10-21 17:28:18 1014

转载 基于live555的流媒体代理转发服务器

对于并发量并不大而且对性能要求不是很高的流媒体传输模块,live555还是很好的选择,下面说一下我所实现的流媒体代理服务器(目前只能实现对H264单视频的转发)代理转发主要分为对RTSP的转发与对RTP的转发(没有实现对rtcp的转发),尽量做到不破坏原有程序框架,所以还是要将整个代理过程融合于ServerMediaSubsession、Source、Sink的循环中,按照流程,RTSP OP

2013-10-19 15:25:53 1097 1

转载 AVI文件格式

AVI(Audio Video Interleaved的缩写)是一种RIFF(Resource Interchange File Format的缩写)文件格式,多用于音视频捕捉、编辑、回放等应用程序中。通常情况下,一个AVI文件可以包含多个不同类型的媒体流(典型的情况下有一个音频流和一个视频流),不过含有单一音频流或单一视频流的AVI文件也是合法的。AVI可以算是Windows操作系统上最基本的、

2013-10-19 09:53:57 390

转载 LINK : warning LNK4098: 默认库“LIBCMTD”与其他库的使用冲突

以前经常遇到这个警告信息,因为运行并没有什么问题,所以也没深究。但是耿耿于怀那个“ 0 个错误,0 个警告”的成功提示,在网上搜了一下。原来问题出在默认库的引用选择上。VS2008,项目——属性——配置属性——C/C++——代码生成:他有/MT,/MTd,/Md,/MDd四个选项,你必须让所有使用的库都使用相同的配置,否则就会有相应的提示,甚至可能会出现无法解析的函数。有时我们使用的库不是

2013-10-16 16:04:29 1797

转载 live555学习笔记17-H264VideoStreamParser详解

十七:H264VideoStreamParser详解很多人要做实时H264 RTP传输,那么如何充分利用live555来做呢?大家可以看到现有的H264VideoFileServerMediaSubsession中,sink使用了H264VideoRTPSink,source使用了H264VideoStreamFramer,然而这个连接是很复杂的,在这两个节点间要插入了很多其它的节点,其实

2013-10-11 14:35:47 740

转载 live555学习笔记16-几个重要对象的生命期

十六 几个重要对象的生命期live555中很多类,类与类之间的关系复杂,从属关系不明显,层次上看起来也有些乱.所以源代码读起来比较困难,对于一些对象生命的来龙去脉也很难厘清.但这并不能说明live555的架构不好,最适合的才是最好的,对于流媒体的处理来说,live555架构已是相当精巧,当然,这是在你深入了解它的基础上才会有的体会.live555作为服务器,大家都很关心

2013-10-11 14:32:42 579

转载 live555学习笔记15-RTCPInstance类小结

十五:RTCPInstance类小结RTCPInstance是对rtcp通信的封装.RTCP主要是功能是统计包的收发为流量控制提供依据.RTCPInstance统计数据的取得仅依赖于RTPSink的一些函数(因为RTPSink发送RTP包),所以RTCPInstance与其它类(GroupSock,RTPInterface等基础类除外)基本关系不大,封装的比较完整.RTCP

2013-10-11 14:26:32 730

转载 Live555学习笔记14-live555多线程论

十四:live555多线程论江湖传闻:live555如果不改为多线程,在多核心机器上效率会降低.虽然我没做过测试,但比较相信此传闻的真实性 .所以在我试论述一下live555如何对多核进行支持,其实就是改为多线程,嘿嘿.先看此文:http://www.live555.com/liveMedia/faq.html#threads跟据它的说法,liv

2013-10-11 14:23:40 755

转载 live555学习笔记13-RTPInterface详解

十三:RTPInterface详解好几天没写blog了。看源码真累啊,还要把理解的写到纸上,还要组织混乱的思想,令人头痛,所以这需要激情。不过,今天激情又来了。大家应该已理解了GroupSocket这个类。理论上讲那些需要操作udp socket 的类应保存GroupSocket的实例。但事实并不是这样,可以看一下RTPSink,RTPSource,RTCPInstance

2013-10-11 14:21:27 625

转载 live555学习笔记12-h264 rtp包的时间戳

十二 h264 rtp包的时间戳这次我们一起来分析一下live555中是怎样为rtp包打时间戳的.就以h264为例吧.void H264VideoRTPSink::doSpecialFrameHandling(unsigned /*fragmentationOffset*/, unsigned char* /*frameStart*/, unsigned /*numBytesInF

2013-10-11 14:17:16 1442

转载 live555学习笔记11-h264 RTP传输详解(3)

十一  h264 RTP传输详解(3)书接上回:H264FUAFragmenter又对数据做了什么呢?void H264FUAFragmenter::doGetNextFrame(){ if (fNumValidDataBytes == 1) { // We have no NAL unit data currently in the buffer. Read a new

2013-10-11 14:13:55 796

转载 live555学习笔记10-h264 RTP传输详解(2)

十 h264 RTP传输详解(2)上一章并没有把打开文件分析文件的代码找到,因为发现它隐藏得比较深,而且H264的Source又有多个,形成了连环计。所以此章中就将文件处理与H264的Source们并在一起分析吧。从哪里开始呢?从source开始吧!为什么要从它开始呢?我就想从这里开始,行了吧?FramedSource* H264VideoFileServerMediaSubs

2013-10-11 14:09:19 823

转载 live555学习笔记9-h264 RTP传输详解(1)

九 h264 RTP传输详解(1)前几章对Server端的介绍中有个比较重要的问题没有仔细探究:如何打开文件并获得其SDP信息。我们就从这里入手吧。当RTSPServer收到对某个媒体的DESCRIBE请求时,它会找到对应的ServerMediaSession,调用ServerMediaSession::generateSDPDescription()。generateSD

2013-10-11 14:04:51 941

转载 live555学习笔记8-RTSPClient分析

八 RTSPClient分析有RTSPServer,当然就要有RTSPClient。如果按照Server端的架构,想一下Client端各部分的组成可能是这样:因为要连接RTSP server,所以RTSPClient要有TCP socket。当获取到server端的DESCRIBE后,应建立一个对应于ServerMediaSession的ClientMediaSession。对应每个T

2013-10-11 14:00:48 825

转载 live555学习笔记7-RTP打包与发送

七 RTP打包与发送rtp传送开始于函数:MediaSink::startPlaying()。想想也有道理,应是sink跟source要数据,所以从sink上调用startplaying(嘿嘿,相当于directshow的拉模式)。看一下这个函数:Boolean MediaSink::startPlaying(MediaSource& source, afterPl

2013-10-11 13:54:48 539

转载 live555学习笔记6-建立RTP会话

六 建立RTP会话首先更正一个概念:ServerMediaSession原先说代表一个流,其实是不准确的。它代表的是server端的一个媒体的名字,而说ServerMediaSubsession代表一个Track是准确的。以后流指的是那些有数据流动的组合。RTP的建立:RTP的建立过程无非是这样:client告诉server自己的rtp/rtcp端口号,server

2013-10-11 13:45:38 924

转载 live555学习笔记5-RTSP服务运作

五 RTSP服务运作基础基本搞明白了,那么RTSP,RTP等这些协议又是如何利用这些基础机制运作的呢?首先来看RTSP.RTSP首先需建立TCP侦听socket。可见于此函数:DynamicRTSPServer* DynamicRTSPServer::createNew(UsageEnvironment& env, Port ourPort,UserAuthent

2013-10-11 12:03:52 752

转载 live555学习笔记4-计划任务(TaskScheduler)深入探讨

四 计划任务(TaskScheduler)深入探讨我们且把三种任务命名为:socket handler,event handler,delay task。这三种任务的特点是,前两个加入执行队列后会一直存在,而delay task在执行完一次后会立即弃掉。socket handler保存在队列BasicTaskScheduler0::HandlerSet* fHandlers中;

2013-10-11 12:00:14 585

转载 live555学习笔记3-消息循环

三 消息循环看服端的主体:live555MediaServer.cpp中的main()函数,可见其创建一个RTSPServer类实例后,即进入一个函数env->taskScheduler().doEventLoop()中,看名字很明显是一个消息循坏,执行到里面后不停地转圈,生名不息,转圈不止。那么在这个人生的圈圈中如何实现RTSP服务和RTP传输呢?别想那么远了,还是先看这个圈圈中实现了什么功

2013-10-11 11:53:00 724

转载 live555学习笔记2-基础类

二 基础类讲几个重要的基础类:BasicUsageEnvironment和UsageEnvironment中的类都是用于整个系统的基础功能类.比如UsageEnvironment代表了整个系统运行的环境,它提供了错误记录和错误报告的功能,无论哪一个类要输出错误,就需要保存UsageEnvironment的指针.而TaskScheduler则提供了任务调度功能.整个程序的运行发动机就是它,它

2013-10-11 11:49:57 632

WTL90_4140_Final.zip

WTL90_4140_Final

2014-07-11

Visual_Assist_X_V10.5.17.15

Visual Assist X主要特性: 不止是C/C++,对于所有编程语言,Visual Assist X都含有可执行的轻载默认剖析器。对于C/C++,您可以选择Visual Assist X专有Intellisense,也可以首选默认剖析器,只有当其不可用时,再采用Visual Assist X,这些工作方式都可以通过专门设置来实现。 更为特色的是,Visual Assist X作为一种低优先度的后台线程插件,不影响您的IDE环境性能。该线程在idle期间活动,当您开始输入代码时,又回复为静默状态。并且它的剖析器不生成目标码,因此,同传统剖析器相比,占用更少的资源。 主要功能: 在Visual Studio中Visual Assist X 利用主要的新特性及现有加强的功能可以惊人的降低软件开发时间周期,他可以让你轻松的做得以下几点: 可以更快的开发代码,更少的产生错误。 可以更快的理解分析已经存在的代码。 可以重构代码,以便使其更加易读和更加方便维护。 通过允许即时访问到任何文件符号及参考来降低检索花费的时间。 Visual Assist无缝衔接以下所有语言的开发: C++ C# VB ASP/ASP.NET HTML XML JavaScript VBScript XAML Visual Assist 可以在目前的及历史版本的Visual Studio中很好的工作: VS2008 VS2005 VS2003 VS2002 VC6 超过50种节省时间的特性 VA Outline(VA 大纲)帮助您轻松地导航、管理与重构代码 Acronyms(首字母缩写)、Suggestions(建议)和 VA Snippets(VA 摘录片段)帮助您更快速地创建代码 增强的 Error Detection & Correction(错误检测与修复)功能在您编译之前捕获错误 所有语言下都能轻松地重新构建 增强的 IntelliSense 与 Hovering Class Blower(停驻类浏览器)帮助您理解复杂的代码 轻松地导航至任何文件、方法或符号 所有语言下都能更快速地找到引用 增强的 Syntax Coloring(语法上色)帮助您更迅速地阅读代码。

2014-03-31

wxWidgets源码

wxWidgets是一个开源的跨平台的C++构架库(framework),它可以提供GUI(图形用户界面)和其它工具。此版本为3.0.0.

2014-03-29

wireshark源码

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

2014-03-29

nginx_vs2008版本

nginx vs2008版本,可编译运行。 可供程序员研究。

2014-03-12

poco-1.4.6p2

POCO C++是一个开源的C++类库的集合,它主要提供简单的、快速的网络和可移植应用程序的C++开发,这个类库和C++标准库可以很好的集成并填补C++标准库的功能空缺。POCO库的模块化、高效的设计及实现使得POCO特别适合嵌入式开发。在嵌入式开发领域,由于C++既适合底层(设备I/O、中断处理等)和高层面向对象开发,越来越流行。当然POCO也准备好了面对企业级挑战。

2014-03-08

CxImage源码

CxImage源代码,传说中非常好用的图片处理源代码。受用中。

2014-03-08

miniapache

这就是传说中的MINIAPACHE,上传资源,以备后用。

2014-03-08

vs2008下的live555工程

windows下的live555工程,直接用vs2008打开, BasicUsageEnvironment、UsageEnvironment、groupsock、liveMedia以及mediaServer与openRTSP。

2013-10-14

WINDOWS核心编程.chm

WINDOWS核心编程 适合新手学习,程序员文档专用。

2013-10-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除