C/C++
文章平均质量分 78
longlong530
这个作者很懒,什么都没留下…
展开
-
map/set iterator not dereferencable异常
今天完成一个会话框架模块后,编译运行,某个会话生命周期结束后,就会出现这个错误提示:map/set iterator not dereferencable看这个提示的意思大概是STL的迭代器不可引用,可能是越界了。仔细核查了下代码,果不其然://遍历会话表; SessionTableIter iter = m_sessionTable.begin();原创 2013-07-22 09:10:19 · 6487 阅读 · 0 评论 -
C++获取本机IP地址
std::string GetLocalIpAddress() { WORD wVersionRequested = MAKEWORD(2, 2); WSADATA wsaData; if (WSAStartup(wVersionRequested, &wsaData) != 0) return ""; char local[原创 2013-07-29 11:31:42 · 1570 阅读 · 0 评论 -
两个实用小工具:wget和nirccmd
今天发现了两个比较有用的小工具,与大家分享下:一.wget.exe: 我们都知道,在Linux下想从网上下载一个资源,只要敲下命令wget URL既可下载,那么windows下是否有这个工具呢,搜了下还真有现成的,其实原理也很简单,可以这样实现:#include #include #define RECVPACK_SIZE 2048bool wgetFi原创 2013-07-23 10:08:53 · 1708 阅读 · 1 评论 -
关于 xxxx.exe 中的 0xxxxxxxx 处最可能的异常: 0xC0000005: 读取位置 0xxxxxxxx 时发生访问冲突
这个异常,让我崩溃了两天~每次堆栈都打不出有效消息,崩溃啊,本来以为是eXosip出了问题,更新了版本还是不行。造成这个错误的原因:1.内存溢出;2.访问了已经被释放的空间。打开VS的这个调试功能就可以定位到问题的根源:VS2010-->调试-->异常:重新构造场景,运行,看到程序down在的地方,太低级了~指针未判空就直接使用了~原创 2013-07-27 17:18:14 · 3278 阅读 · 0 评论 -
C和C++的时间编程
经常要用到时间,脑袋里又记不住,全都找出来整理在这里,随时看哈哈unix时间相关,也是标准库的这些在1.timegm函数只是将struct tm结构转成time_t结构,不使用时区信息;time_t timegm(struct tm *tm);2.mktime使用时区信息time_t mktime(struct tm *tm);timelocal原创 2013-06-15 14:14:28 · 930 阅读 · 0 评论 -
UTF-8 GBK UTF8 GB2312 之间的区别和关系
UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示原创 2013-06-20 16:49:55 · 1187 阅读 · 1 评论 -
UDP端口监听工具
最近经常测试流媒体的传输,要监听某个端口看流是否引入了,每次打开wireshark太麻烦了,就写了简单的小工具,监听某个端口是否来数据了:int UDPReceiveTest(int port) { SOCKET sockSrv; SOCKADDR_IN addrSrv; WORD wVersionRequested; WSADATA wsaData; int err;原创 2013-07-29 09:40:07 · 4453 阅读 · 0 评论 -
ICE的5个服务
Ice为分布式开发提供了技术完善的客户-服务平台。实际上,现实的应用不仅仅只需要具备远程通讯能力,通常的,还需要随需启动服务,把代理分布到客户端,分发异步事件,配置应用,发布补丁等等。 Ice自带了一些服务,这些服务具备了上面所说的特征和一些其它的特征。这些服务实现以服务器的形式实现并向你的应用提供服务。他们分别是:1、IcePack IcePack是Ic原创 2013-08-19 17:23:43 · 974 阅读 · 0 评论 -
在日志中如何打印文件、行号、方法名
这段代码中用到了这几个宏: 1) __VA_ARGS__ 是一个可变参数的宏,这个可宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用。 2) __FILE__ 宏在预编译时会替换成当前的源文件名 3) __LINE__ 宏在预编译时原创 2013-09-27 08:48:37 · 2344 阅读 · 2 评论 -
文件处理函数
这两天在写个遍历文件批处理的小工具,碰到几个时间相关的函数,整理了下,说不定以后可能会再用到呢~ //判断文件是否存在bool FileIsExists(LPCSTR filePath){ WIN32_FIND_DATA FindFileData; HANDLE hFind; hFind = FindFirstFile(filePath, &FindFileData原创 2014-04-04 10:41:41 · 1112 阅读 · 0 评论 -
C++时间格式转换函数(字符串转整型)
最近做国标28181录像查询业务的对接,需要将时间格式从“2013-09-18T14:32:17”格式的字符串转换成整型去请求历史录像,写了下面一个函数,有需要的可以参考下。另外,国标这块我觉得设计的就不合理了,录像查询的时候的时间格式是字符串,录像请求的时候又变成了整型,不能统一,想这种格式的转换尽量放在一端做,不要两端都做,容易弄混淆,你觉得呢?time_t CStreamGe原创 2013-09-22 16:17:43 · 4906 阅读 · 2 评论 -
windows平台ffmpeg编译
ffmpeg编译可参考以下网址: http://trac.ffmpeg.org/wiki/CompilationGuide http://www.cppblog.com/gaimor/archive/2012/12/29/196815.html一、准备环境1.下载MinGW官网www.mingw.org,切换到download页面下载mingw-get-se原创 2014-12-17 11:52:24 · 1174 阅读 · 0 评论 -
推荐两个小工具MediaInfo 和 netpersec
流媒体服开发的时候常用的两个工具,1. MediaInfo 下载路径:(http://w.x.baidu.com/alading/anquan_soft_down_all/11027) 工具说明:可以查看视频、图片文件的文件信息,包含编码、文件格式等多个属性使用也很方便,安装后直接右键点击选择要查看的文件即可:图片:视频:原创 2015-01-29 09:19:43 · 3248 阅读 · 0 评论 -
Windows下生成dump文件方法
一. 背景 没人能保证自己的软件在各种未知环境运行下,会木有任何问题。那么如果程序崩溃了怎么办?看日志?日志不全又怎么办?日志能帮你定位的多细致呢?如果能有种方法记录程序最后工作的状态,比如堆栈调用情况等,那么我们就可以获悉“它是如何挂掉的~”二. 调研我们对程序bug引起的程序崩溃的五种定位方法进行了调研,并最终选择方案5为我所在项目使用的程序崩溃定位方案。原创 2015-01-30 15:16:46 · 6592 阅读 · 0 评论 -
【Darwin学习笔记】之获取系统处理器数量的方法
阅读Darwin源码的时候看到这个方法,感觉挺有用处,且考虑了多种平台下的实现方式,直接贴代码,以后说不定会用到~UInt32 OS::GetNumProcessors(){#if (__Win32__) SYSTEM_INFO theSystemInfo; ::GetSystemInfo(&theSystemInfo); return (UIn原创 2015-01-28 13:48:06 · 1302 阅读 · 0 评论 -
【Darwin学习笔记】之QTSSReflectorModule的Describe消息处理
对于QTSSReflectorModule里面的Describe消息只处理sdp类型的资源请求,其他类型的比如mov、mp4等资源会跳转到QTSSFileModule里面,其中mp4文件在Darwin源码中点播需要先hint下。如果想在增加多种视频格式那就要对FileModule进行扩展,在我们的项目中就优化了FileModule,实现了对mp4、avi等各种格式的文件的点播支持。后面的章节我们详原创 2015-02-06 15:19:52 · 1695 阅读 · 0 评论 -
脚本写的俄罗斯方块,非常强大!
BAT版本:@echo off&rem 俄罗斯方块游戏,由netbenton编写,在bathome首发,完成时间:2009年9月25日 ver 2.0if "%1" equ "para2" goto :para2 set "d-v=for %%a in (!str!) do set/a one=0x%%a,x=one/4+n,y=one%%4+m&(for %%b in ("r!x!.!y!转载 2013-06-21 13:35:47 · 2081 阅读 · 0 评论 -
计算机常用端口大全
0|无效端口,通常用于分析操作系统1|传输控制协议端口服务多路开关选择器2|管理实用程序3|压缩进程5|远程作业登录7|回显9|丢弃11|在线用户13|时间17|每日引用18|消息发送协议19|字符发生器20|FTP文件传输协议(默认数据口) 21|FTP文件传输协议(控制)22|SSH远程登录协议23|telnet(终端仿真协议),木马原创 2013-07-05 08:59:45 · 1432 阅读 · 0 评论 -
【GBT28181开发:SIP协议实践】之注册流程
由于已经成功搭建好基于eXosip的UAC的开发环境,并且也与SPVMN测试系统交互成功,所以现在开始针对注册、查询等业务进行详细的研究。今天先研究下设备注册的流程,模拟一个IPC向SPVMN系统注册,记录下交互的消息,详细研究了下:转载请注明出处:http://blog.csdn.net/longlong530一.环境搭建:环境准备:http://blog.csdn.原创 2013-06-26 17:07:41 · 11306 阅读 · 24 评论 -
Socket例子
// SocketServer.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #includeusing namespace std;#pragma comment(lib, "ws2_32.lib") #define PORT 5000原创 2013-06-03 11:02:43 · 704 阅读 · 0 评论 -
函数fopen
C语言函数fopen函数简介函数功能:打开一个文件函数原型:FILE * fopen(const char * path,const char * mode);相关函数:open,fclose,fopen_s[1],_wfopen所需库:stdio.h>返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把转载 2013-06-17 09:14:28 · 677 阅读 · 0 评论 -
C++中字符串操作的一些常用函数
一. strnicmp函数名: strnicmp功 能: 比较字符串str1和str2的前n个字符串字典序的大小,但是不区分字母大小写。返回值: 当str1str2时,返回值>0。比较是这样进行的,先比较2个字符串的第1个字符字典序的大小,如果能比较出大小,则马上返回了,如果不能区别大小,开始比较第2个,如果这时第1个字符串已经到尽头了,第2个字符串还有字符,这时算原创 2013-06-17 10:06:43 · 1755 阅读 · 0 评论 -
DLL简单例子入门
后面项目可能要封装一些API到DLL中,供应用层使用,所以今天研究了下DLL:第一步,建立DLL项目:为了建立项目,请选择Win32 控制台项目(Win32 Console Application),并且在设应用程序设置标签(the advanced tab)上,选择DLL和空项目选项。第二步,DLL头文件首先写你的头文件(header file);称为DLLTutorial.原创 2013-06-20 14:49:17 · 2155 阅读 · 1 评论 -
RTSP 消息拼装实例代码
整理了下之前文章提到的RTSP实例的代码,主要是拼装各类消息字段。首先,抽取一个公共函数,用来根据消息类型,生成不同的format,供sprintf试用。char * GetRTSPCmd( const char * szName){ char *str = NULL; char const* cmdFmt = NULL; if(!strcmp(szName, "OPTION原创 2013-06-21 08:58:26 · 1643 阅读 · 0 评论 -
loadlibrary释疑
在利用loadlibrary显示装载某动态库的时候例如:HINSTANCE hDll = LoadLibrary("./abc.dll"); 结果编译器报错说不能将char[]转换为LPCWSTR, 查阅msdn函数原型为HMODULE WINAPI LoadLibrary( __in LPCTSTR lpFileName);将代码改为:转载 2013-06-20 14:58:09 · 6053 阅读 · 0 评论 -
VS自带工具:dumpbin的使用
有时候我们想查看一个exe引用了哪些动态库,或者我们想看某个动态库包含哪些接口函数,这个时候可以使用dumpbin.exe工具:1.输入Dumpbin -imports calldll.exe查看它的输入信息,可以看到它加载了***.dll2.输入dumpbin –exports dlltest.dll,列出导出函数开始->所有程序->Microsoft Visua原创 2013-06-20 15:18:15 · 4131 阅读 · 1 评论 -
一个解析RTSP 的URL函数
写了一个解析URL的函数,可以提取URL中的IP 和 port。如:url = "rtsp://192.168.1.43:2554/realmp3.mp3";url = "rtsp://192.168.10.177/bipbop-gear1-all.ts";之前写过一篇关于一些常用的字符串操作函数,在这里解析都会用到:http://blog.csdn.net/longlong530/a原创 2013-06-21 09:08:02 · 2609 阅读 · 0 评论 -
C++的dllexport和dllimport
__declspec(dllexport)声明一个导出函数,是说这个函数要从本DLL导出。提供给别人用。一般用于dll中省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类。__declspec(dllimport)声明一个导入函数,是说原创 2013-06-20 14:26:27 · 2130 阅读 · 0 评论 -
Windows平台下动态链接库DLL的总结
1、 动态链接库与静态连接库 静态连接库与动态链接库都是经过编译器编译之后的,在计算机上可以直接运行的二进制目标文件,就像exe文件一样,但不同于exe文件的是静态链接库和动态链接库不可以独立运行,一般而言,动态链接库和动态链接是在内部实现了一些功能,对外提供了一组接口函数使得外部的程序能够通过这些对外的接口函数来使用其内部的功能。 静态链接库,是在调用该静转载 2013-06-06 14:26:38 · 1077 阅读 · 0 评论 -
C++开源日志库--Glog的使用
公司其他同事大多做C#的,公司内部暂时也没用提供自己的C++日志库,由于项目较紧急,所以就准备选一个开源日志库使用,由于以前做过java,用的Log4j比较强大,但是查了下,其使用起来有点复杂。所以就想到最伟大的公司google了,其Glog使用还是比较简单的,源码下下来直接用VS编译生成lib和dll库,源码文件中都有现成的vs工程。开源项目首页:https://code.googl原创 2013-07-16 11:31:05 · 12636 阅读 · 0 评论 -
自己动手写RTSP Clientt与Live555的RTSP Server交互
学习Live555开源项目已经有一段日子了,主要目的是想通过Live555学习RTSP协议,Live555 的 RTSP server可以很简单的搭建起来。然后,我想通过自己拼装协议字段,来做一个RTSP Client与server交互。这样可以加深对RTSP协议的理解。第一步,在VS2010下编译Live555源码,生成mediaServer.exe。原创 2013-06-15 17:15:18 · 3431 阅读 · 1 评论 -
【GBT28181开发:SIP协议实践】之Windows下编译eXosip、osip
今天开始了SIP开源库的学习,我选择了osip和eXosip,但是这两个库的编译使用有些麻烦,源码下来之后编译会出现很多问题,网上也没有找到完整的编译介绍,只能一步一步的找办法解决,最后终于编译成功!先大概记录下编译过程,后面还要再整理下。期间还向CSDN论坛求助了下,但是还没有反应:http://bbs.csdn.net/topics/390499635?page=1#post-394866原创 2013-06-25 16:03:13 · 10834 阅读 · 19 评论 -
C++之TinyXML的使用介绍
一.引子:最近在做GBT28181国标平台对接的工作,涉及到一些进程间消息通讯,消息体有xml格式,之前测试的时候都是拿他们当做字符串去解析,现在正儿八经地开发的时候,就想到了用xml库去解析,由于之前在HW最后一个项目用到的xml库就是这个,所以这里延续使用它。总体来说还是比较好用的:二.编译、使用: 源码库下载:http://sourceforg原创 2013-07-17 14:39:43 · 1347 阅读 · 0 评论 -
RTSP调试代码
#ifdef _WIN32_WCE#include "stdafx.h"#endif#ifndef _WIN32_WCE#define WIN32_LEAN_AND_MEAN#endif#include #include #include #include #include #include #include #ifdef _WIN32_WCE#原创 2013-07-18 11:28:13 · 1415 阅读 · 1 评论 -
C++之时间函数使用总结
今天设计了一个会话管理框架,管理客户端与服务器的每个Session,在SessionMgr管理会话的时候,用到时间函数,去判断会话是否超时。这里顺便整理下,时间相关的一些函数和结构体。一. time_t先不关心操作系统类型,从下面声明可以看出time_t其实就是个长整型,一个日历时间,也就是从1970年1月1日0时0分0秒到此时的秒数,最迟时间是2038年1月18日19时14分07原创 2013-07-18 16:50:41 · 1733 阅读 · 0 评论 -
VS远程调试之Remote Debugger
1、 拷贝Remote Debugger(对应程序在多少位机器上编译即使用多少位远程调试器)到需要调试的机器上。2、 代码所在机器上的IDE在工程属性-调试中配置如下:3、 将要调试机器上对应的进程关闭。打开Remote Debugger,选项中设置身份验证模式为无身份验证,最长空闲时间设置长一些。4、 此时,在有代码的机器上按F5运行程序,即可以进入断原创 2015-02-28 09:12:47 · 5120 阅读 · 0 评论