![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多媒体网络开发(C/C++)
文章平均质量分 63
oeichenwei
这个作者很懒,什么都没留下…
展开
-
VC中的UTF8解码算法
为了节省网络带宽,很多网络应用程序都是使用了UTF8编码方式,比如MSN等,UTF8的编码原理其实很简单,这里给一段Windows下面的VC实例。#define UNKOWN_CHAR ?#define isByteOfOneByteChar(b) (((b) & 0x80) == 0x00) #define isHeadOfTwoBytesChar(b) (((b)原创 2005-02-17 08:59:00 · 2277 阅读 · 3 评论 -
EnglishPlayer ---- 英语听写工具发布了!
好久没更新日志了,一直在忙着推出我的英语听写工具软件!主要功能如下:1、慢速播放功能,播放英语的时候如果听不清楚可以慢速播放;2、自动断句听写功能,在听写模式,根据语音自动断句,方便听写;3、听写回放功能,能根据听写的时序,一句一句加亮回放!4、在学习听力教程播放时,如果某句话某个单词没听懂,可以随时自动复读最近的一句,不需要AB复读那种麻烦的设置!先写这么多了,更详细的使原创 2010-04-21 21:30:00 · 819 阅读 · 1 评论 -
double的结构
我们知道,每个数字都可以表示成科学计数法,比如5.12e10等于5.12 x 102, 对二进制也是一样可以适用,比如5的二进制格式是0101,使用科学计数法表示的结果就是1.01 x (0010)2。浮点数就是采用科学计数法存储的,对于double而言,总共64位,最高位是符号位:0表示正,1表示负,接着的11位为指数位,关系为:11位数组成的值(无符号)-1023=指数;剩下的52位是小数位(原创 2009-11-18 15:20:00 · 639 阅读 · 0 评论 -
sscanf支持正则表达式
http://hi.baidu.com/yinjianren/blog/item/28dce5ca75e30585c9176896.html支持集合操作: %[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配) %[aB] 匹配a、B、中一员,贪婪性 %[^a] 匹配非a的任意字符,贪婪性 是不是感觉眼熟了啊,不错,这和正则表达式很相似,而且仍然支持过滤,即可以有%*[a-z]转载 2009-11-16 12:54:00 · 435 阅读 · 0 评论 -
内存溢出攻击分析(下)
非堆栈攻击前面的例子里面我们展示了如何在接管了程序的控制权后执行自己代码的方法,但是如果被攻击者阻止执行任何在堆栈上面的代码,那么这个方法将立即失效。所以现在所谓的基于“非堆栈”的方法正在被越来越多的使用。其实这个方法的原理也不新鲜,就是我们返回地址不再填充为stack上面的地址,而是直接填系统函数的地址,比如WinExec的程序段地址。剩下的问题是,如何将参数压入堆栈,刚刚好在调用系统函数的翻译 2009-10-12 17:10:00 · 1166 阅读 · 0 评论 -
内存溢出攻击分析(上)
内存溢出攻击分析什么是内存溢出?简单的说,内存溢出就是程序向内存写入了比分配更多的空间更多的内容。攻击者据此控制程序执行的路径,冒名执行它的代码。对那些好奇这一切都是如何发生的人,本文试图详细介绍攻击的实现机制并提出一些预防措施。从我们知道的经验来看,大多都听说过这些攻击,但是很少几个真的理解攻击的具体机制,有些人有些模糊的印象,甚至有些人根本不知道越界攻击是什么。还有些人认为这个属于秘密翻译 2009-10-10 16:02:00 · 2337 阅读 · 0 评论 -
使用Winpcap实现Windows NAT
最近在实现NAT穿透方面的工作,因此需要测试各种各样的case,如果全部都使用真实的环境测试实在太麻烦,效率太低,所以就根据开源的项目:http://www.kobore.net/soft/pipmasq/,进行了适当的修改,模拟了各种NAT的端口的算法。修改后的程序支持XP/VISTA。最近非常追求100%单元测试,因此也做了很多底层的网络环境模拟器,也对TCP/IP协议有了更深的了解,比较开心原创 2009-09-09 17:40:00 · 859 阅读 · 1 评论 -
C++异常处理
结构化异常(structured exception) vs C++异常(C++ exception)大家都知道C++异常是C++语言的一个特性,用户可以使用throw的方式来抛出异常,try{} catch(...){}来捕获异常。结构化异常是诸如,Zero Divided, Access violations等异常,这些异常是由系统支持的,并非语言特性。在C语言或者汇编也可以截获这类原创 2009-06-26 10:08:00 · 491 阅读 · 0 评论 -
使用LSP进行带宽限制(Net limiter)
在开发过程中常常需要模拟各种带宽,以尽可能的模拟用户的状况,解决一些Corner的case。但是往往由于工具不力,我们费时费力还得不到很好的结果。关于带宽限制的软件还真不多,国外有一个Net Limiter不过要收费的。于是花了两天时间自己根据自己的需要简单的时间实现了一个,原理是使用LSP过滤,下面简单介绍一下。1. 什么是LSP? LSP – Layered Service Pr原创 2009-08-04 16:33:00 · 2531 阅读 · 2 评论 -
WinSocket的几种异步模式总结
使用Winsock Non-block模式的时候,我们有多少种方法进行异步接收?总共4种!1. 使用WSAAsyncSelect: 使用该方法可以指定两种模式,一种是事件通知,另外一种是窗口通知。就是有数据的时候通知上层进行接收。这个是在Windows上面使用最多的。2. 创建线程使用select模式: 这个方法的好处是标准接口,基本在系统之间不需要怎么移植,但是实际使原创 2009-08-04 16:23:00 · 580 阅读 · 0 评论 -
指针数组
这个属于非常基础的东西了,不过的确容易出错,所以一般我都避免使用;)最近在弄cppxml.googlecode.com,因此又重新复习了一把,下面是4个test case data **pDataArray = new data*[10]; char (*pDim2)[10] = new char[5][10]; char *str[] = {"China","Japan",原创 2009-07-16 14:42:00 · 247 阅读 · 0 评论 -
strcpy ,strncpy ,strlcpy,strcpy_s(转载)
strcpy ,strncpy ,strlcpy(转载) 好多人已经知道利用strncpy替代strcpy来防止缓冲区越界。但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。1. strcpy我们知道,strcpy 是依据/0作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。strcpy 常规的实现代码如下(来自 OpenBSD转载 2009-04-13 09:58:00 · 2265 阅读 · 0 评论 -
C++实现Delegate
大家都知道C#的Delegate非常的好用,特别是应用在Subject-Observer模式的时候,具有很好的灵活性,但是C++只有function pointers,前面有一篇blog讲到了它的问题,以及难以理解的地方。不过也提到boost使用模板实现了boost::function基本具备了delegate的特点,我稍加改造,去除了boost的依赖关系,实现了一个小巧的Delegate,不过鉴原创 2006-04-25 22:52:00 · 1816 阅读 · 3 评论 -
AutoMake使用小结
现在google Makefile 和 automake就能找到一些文章。以一个Hello 程序描述为一个project生成Makefile的过程。 这个例子其实在 Info automake 里能看到。大家把它翻成中文的,不错。 但实际上按照这个例子来做的话,步骤都对,就是太简单,一些常用的设置需要写进去,但是没有提到,还是要自己info , google ,try . 下面是我对Automak原创 2005-12-08 16:40:00 · 2572 阅读 · 2 评论 -
C/C++内存泄漏检查之经验
C程序中最可怕的事情就是碰到内存泄漏或者内存错误,特别是对于大型的项目而言要去查一个小小的内存泄漏可要花不少功夫的。目前已经有很多这方面的工具,比较著名的如Rational Purify,不过Purify对Linux的支持比较少,而且有一种泄漏是由于运行过程中不断增长但是在程序结束的时候释放的泄漏这些工具有时也无能为力,另外一条路是通过重载new,delete,malloc等来达到内存监控的目的,原创 2005-06-02 13:55:00 · 1781 阅读 · 0 评论 -
ethereal filter使用经验谈
如同Tcpdump一样,Ethereal支持非常丰富的过滤器。过滤器分为两类,一类是抓包过滤器(capture filter),当网络流量很大时,可以非常有效地过滤噪音数据;另外一类是显示过滤器(display filter), 可以从你抓到的所有数据包中过滤噪音数据。事实上,由于好的过滤器需要非常好的网络知识,所以除非非常需要,一半可以不作过滤;我自己比较喜欢在抓取的时候不设过滤器,然后利用简单原创 2005-03-17 11:08:00 · 2670 阅读 · 1 评论