C/C++
文章平均质量分 75
Ejnstein
这个作者很懒,什么都没留下…
展开
-
用WinPcap技术捕获数据包
前言 随着网络入侵的不断发展,网络安全变得越来越重要,于是网络入侵取证系统的研究也变得日益重要。在网络入侵取证系统中,对网络上传送的数据包进行有效的监听即捕获包是目前取证的关键技术,只有进行高效的数据包捕获,网络管理员才能对所捕获的数据进行一系列的分析,从而进行可靠的网络安全管理。 1winpcap简介 WinPcap 是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows转载 2009-11-25 14:07:00 · 1200 阅读 · 0 评论 -
GCC使用入门
通常所说的GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码。GCC是Linux平台下最常用的编译程序,它是Linux平台编译器的事实标准。同时,在Linux平台下的嵌入式开发领域,GCC也是用得最普遍的一种编译器。GCC之所以被广泛采用,是因为它能支持各种不同的目标体转载 2007-06-18 11:54:00 · 1003 阅读 · 0 评论 -
VC中使用nmake命令编译方法
推荐链接:轻松注册,推荐一个网站获得20元网络账本 —免费的网络记帐本,今天你记账了吗?倍新咨询—投资咨询专家在线炒外汇—免费订阅外汇月刊学不好英语,不是你的错。因为学习内容太枯燥乏味! 为什么不试试《看电影学英语》? VC6.0其实已经不再使用makefile文件进行编译了,但是它仍然可以导出makefile文件,后缀名为*.mak,方法是在工程菜单下的原创 2007-09-08 20:50:00 · 6986 阅读 · 1 评论 -
关于友员函数的低级错误
function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit.as转载 2007-06-09 23:16:00 · 692 阅读 · 0 评论 -
[VC++]点对点(P2P)多线程断点续传的实现
在如今的网络应用中,文件的传送是重要的功能之一,也是共享的基础。一些重要的协议像HTTP,FTP等都支持文件的传送。尤其是FTP,它的全称就是“文件传送协议”,当 初的工程师设计这一协议就是为了解决网络间的文件传送问题,而且以其稳定,高速,简单而一直保持着很大的生命力。作为一个程序员,使用这些现有的协议传送文件相当简单,不过,它们只适用于服务器模式中。这样,当我们想在点与点之间传送文件就不适用了或转载 2007-09-10 03:14:00 · 2603 阅读 · 3 评论 -
一种新的穿透防火墙的数据传输技术
使用该技术背景:在目标主机安放后门,需要将数据传输出去,同时数据很重要,动作不能太大.其他情况"严重"不推荐使用该技术(后面我会讲到为什么). 针对目前防火墙的一些情况,如果自己的进程开一个端口(甚至是新建套接字)肯定被拦.相反,有一点我们也很清楚:被防火墙验证的进程在传送数据时永远不会被拦.所以,我的思路很简单:将其他进程中允许数据传输的套接字句柄拿为已用.过程如下:1. 找出目标进程2.转载 2007-09-10 03:12:00 · 889 阅读 · 0 评论 -
跟我一起写Makefile
陈皓 概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不转载 2007-09-06 17:15:00 · 997 阅读 · 1 评论 -
谈谈C++继承中的重载,覆盖和隐藏
写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide)。在早期的C++书籍中,可能翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的,他们是英语专业的),常常把重载(overload)和覆盖(override)搞错! 我们先来看一些代码及其编译结果。 实例一: #include "stdafx.h"转载 2007-05-26 12:05:00 · 693 阅读 · 0 评论 -
空指针深度剖析
什么是空指针常量(null pointer constant)?[6.3.2.3-3] An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.这里告诉我们:0、0L、/0、3 - 3、0转载 2007-05-26 11:50:00 · 1248 阅读 · 0 评论 -
彻底搞定C指针-指向另一指针的指针
一. 回顾指针概念:早在本系列第二篇中我就对指针的实质进行了阐述。今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧!当我们程序如下申明变量:short int i;char a;short int * pi;程序会在内存某地址空间上为各变量开辟空间,如下图所示。内存地址→6 7 8 9 10 11 12 13转载 2007-08-23 23:34:00 · 1818 阅读 · 0 评论 -
初试Text-To-Speech
Text-to-speech,即文本语音转换前期准备首先,跑去微软的窝窝里搜了一会,找到了speech的sdk,马上下了,我下的是5.1,再把语言包也下了,安装完后,记得把sdk的include目录和lib目录添加到vc的Tools/Options/Directories里。记得把sdk的include和lib目录路径放到原来vc的引用路径的前面,即如下:开始我们还是先以一转载 2007-05-15 21:20:00 · 1875 阅读 · 0 评论 -
用TTS技术开发具有文本朗读功能的应用程序
摘 要:TTS技术已经越来越广泛地应用到现代计算机的各个领域,本文介绍了利用微软的Microsoft Speech SDK 5.1提供的TTS(text-to-speech)技术开发具有语音朗读功能的应用程序。关键字:语音合成;TTS;发声引擎中图分类号:TN912.33;TP311.52 文献标识码:A Create speech-enableed Apllication转载 2007-05-15 21:21:00 · 1978 阅读 · 1 评论 -
游戏外挂设计技术探讨
一、 前言 所谓游戏外挂,其实是一种游戏外辅程序,它可以协助玩家自动产生游戏动作、修改游戏网络数据包以及修改游戏内存数据等,以实现玩家用最少的时间和金钱去完成功力升级和过关斩将。虽然,现在对游戏外挂程序的“合法”身份众说纷纭,在这里我不想对此发表任何个人意见,让时间去说明一切吧。 不管游戏外挂程序是不是“合法”身份,但是它却是具有一定的技术含量的,在这些小小程序中使用了许多高端技术,如拦转载 2007-09-28 23:52:00 · 1628 阅读 · 0 评论 -
C++ 开发常用工具“群英会”
开发环境 ---->Turbo c DOS时代c语言开发的经典工具,目前适合两类人使用:c语言beginner(尤其是学生一族),具有怀旧情节的专业人士:) ---->Visual C++ 6.0/7.0 稳定而强大的IDE开发环境,具有丰富的调试功能,定制宏的功能也是其一大特色。Microsoft的经典之作,功能强大自不必言说。附带的一些工具也很不错,比如:Spy++。但编译器较之同类转载 2007-10-17 14:18:00 · 852 阅读 · 0 评论 -
Symbian函数或类与头文件和LIB库对照表
"AgnDateTime" ,"agmdate.h ", "agnmodel.lib ","AgnEntryStorer" ,"agmentry.h ", "agnmodel.lib ","AgnModel" ,"agmcomon.h ", "agnmodel.lib ","AknBorderId" ,"aknborders.h ", "","AknCommonDialogs" ,"akncomm转载 2008-01-01 21:21:00 · 2141 阅读 · 1 评论 -
初学者学习C++的50条忠告
1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我转载 2009-09-30 16:09:00 · 987 阅读 · 2 评论 -
VC编写浏览器中不弹出警告的ActiveX控件
我们在编写ActiveX控件时,如果用在浏览器中,经常都会弹出现在运行的脚本不安全的提示, 如果给客户使用,将会带来极大不便。按照MSDN的介绍通常有两种一种是实现IObjectSafe接口,一种是通过修改注册表的方法。一般如果用ATL开发ActiveX控件,就用实现ObjectSafe接口的方法。如果用MFC开发,我觉得还是用修改注册表的方法比较方便。下面我们将第二种方法:要包括两个文件转载 2009-09-30 14:12:00 · 792 阅读 · 0 评论 -
Interop(交互) Between C# and C++ 研究一
在进行这一个研究前,首先得有一个思想:语言只是一个工具,不同的语言在不同的平台与环境下发挥不同的作用,而你的权利是在选择.有一次我要开发一个关于视频点播系统(事实上这一个系统没什么用处)的时候,发现C#不是很合适进行对Directshow的开发.一个方面是directx在C#环境下对Directshow的支持比较少,另一个方面是在存在Directshow.net(一个开源项目,是转载 2009-09-08 20:24:00 · 705 阅读 · 0 评论 -
C# ATLCOM Interop code snipperts
Reference: http://www.codeproject.com/KB/cs/CSharpATLCOMInterop1.aspx Download Interop1 - 33.85 KB IntroductionThere is none. I dare not give an “introduction” to Interop and risk exposi原创 2009-09-08 21:33:00 · 1257 阅读 · 0 评论 -
Interop(交互) Between C# and C++ 研究三
有了这一个想法后,又做了一个简单的Demo:(1)在原来的Atltest项目里面添加新类TestSecond,并且为之添加连接点.(2)为类TestSecond添加接口RaiseEvent,AtlTest.idl文件中,代码如下:[id(1), helpstring("方法RaiseEvent")] HRESULT RaiseEvent([in] LONG a); 在TestSec转载 2009-09-08 20:26:00 · 691 阅读 · 0 评论 -
Interop(交互) Between C# and C++ 研究二
在使用ATL之前也先做一个小小的测试项目:Project:AtlTestFiles:(通过项目向导添加类:TestFIrst,并通过向导添加类TestFirst的方法Add,则以下文件将有相应的改变)AtlTest.idl部分:interface ITestFirst : IDispatch{[id(1), helpstring("方法Add")] HRESULT Add(转载 2009-09-08 20:26:00 · 527 阅读 · 0 评论 -
堆和堆栈的区别
堆和堆栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(stati转载 2008-12-12 16:51:00 · 1457 阅读 · 2 评论 -
C#调用C++编写的COM DLL
在C#调用C++编写的COM DLL封装库时会出现两个问题:1. 数据类型转换问题2. 指针或地址参数传送问题 首先是数据类型转换问题。因为C#是.NET语言,利用的是.NET的基本数据类型,所以实际上是将C++的数据类型与.NET的基本数据类型进行对应。 例如C++的原有函数是: int __stdcall FunctionName(unsig原创 2009-03-02 20:42:00 · 558 阅读 · 0 评论 -
如何从dll文件导出对应的lib文件
Visual C++ 开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。1、在命令行执行:dumpbin /exports yourdll.dll > yourdll.def2、编辑 yourdll.def 文件,使之格式与.def文件格式一致。比如:EXPORTS; fn1; fn2;3、在命令行执行:l转载 2008-11-28 09:06:00 · 625 阅读 · 0 评论 -
C++Builder调用VC的dll以及VC调用C++Builder的dll
解析__cdecl,__fastcall, __stdcall 的不同:在函数调用过程中,会使用堆栈,这三个表示不同的堆栈调用方式和释放方式。 比如说__cdecl,它是标准的c方法的堆栈调用方式,就是在函数调用时的参数压入堆栈是与函数的声明顺序相反的,其它两个可以看MSDN,不过这个对我们编程没有太大的作用 --------------------------------------------转载 2008-11-27 20:36:00 · 759 阅读 · 0 评论 -
如何操作被占用文件三法
无疑我们中的很多人都会遇到需要读写被其它进程占用的文件的情况,比如说在编写 backup 程序或是 trojan 的时候。能从系统中抽出 SAM 文件,或是读取其它某些用标准方法无法成功访问的文件显然是件不错的事情。比如说当用标志 dwShareMode = 0 打开文件时,其它进程就不能对它进行访问了。一个很好的例子就是网络寻呼机程序 Miranda。这个程序在自己工作的时候不允许别人打开自己的原创 2008-09-23 16:33:00 · 911 阅读 · 0 评论 -
文本语音转换
内容简介 文本语音(Text-to-Speech,以下简称TTS),它的作用就是把通过TTS引擎把文本转化为语音输出。本文不是讲述如何建立自己的TTS引擎,而是简单介绍如何运用Microsoft Speech SDK 建立自己的文本语音转换应用程序。 Microsoft Speech SDK简介 Microsoft Speech SDK是微软提供的软件开发包,提供的Spee转载 2007-05-15 20:51:00 · 1667 阅读 · 1 评论 -
基于流媒体技术的低成本网络实况转播的实现
1.概述随着网络技术的发展,越來越多的事情可以利用网络实现了,随着流媒体技术的广泛运用,我们不仅可以再网上看电影,听歌曲,而且可以通过网络进行实况转播,例如中央电视台的春节晚会,就可以在网上看到实况。实况转播在远程教育及电化教育中是一种特殊的教学手段,但是通常实况转播需要很多专用设备才能实现,普通学校在日常教学中用到它是相对困难的。本文讨论一种基于流媒体的网络实况转播方案适合普通学校转载 2007-05-15 21:22:00 · 1604 阅读 · 0 评论 -
C++让基类握住派生类的指针
转自:http://blog.csdn.net/viewpl/archive/2006/09/24/1270055.aspx握住派生类指针是指拥有一个派生类指针的成员,暂且不谈这样做干什么,先来看一下如何这样做 // sample1.cpp#include cstdlib>#include iostream>#include string>using namespace std;c转载 2007-08-09 23:15:00 · 841 阅读 · 0 评论 -
获取字体点阵
CMatrix COpenGLFont::GetMatrix( UINT nChar ){ CMatrix matrix( 64, 64, 0); GLYPHMETRICS gm; memset( &gm, 0, sizeof(gm)); MAT2 mat2; mat2.eM11.value = 1; mat2.eM11.fract = 0; mat2.eM12.value = 0; m转载 2007-03-13 13:04:00 · 1186 阅读 · 0 评论 -
VisualC++ 打开或向项目添加文件时停止响应
症状loadTOCNode(1, symptoms);启动打开文件对话框通过键盘快捷键 VisualC++ 中或从 文件 菜单将导致以下错误:0x5003eaed 上 DEVSHL.DLL 中访问冲突 (0xC0000005)。DevShl.Dll 引用 0x0000000 上内存。 无法读取内存。 当从文件菜单从 项目 菜单中选择添加到项目该同一错误发生。原创 2007-02-21 22:40:00 · 1878 阅读 · 0 评论 -
C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。转载 2007-02-21 18:26:00 · 732 阅读 · 0 评论 -
认识 C++ 中的 explicit 关键字
带单一参数的构造函数在缺省情况下隐含一个转换操作符,请看下面的代码:class C {int i;//...public: C(int i);//constructor and implicit conversion operator//as well};void f() {C c(0);c = 5; //将 5 隐式转换为 C 对象,然后赋值}编译器重新编辑上述例子代码,如下: ///转载 2007-02-26 13:00:00 · 985 阅读 · 0 评论 -
解析#pragma指令
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的参数。(1)转载 2007-02-25 12:35:00 · 671 阅读 · 0 评论 -
关于C++头文件
经常在CSDN以及其他之类的技术论坛上问关于C++ 头文件的问题。提出这些问题的往往就是那些刚学C++的新手。当初我是菜鸟的时候也问过类似的问题。 现在来看看下面两个include: #include // 这个就是1998年标准化以后的标准头文件 #include // 这个就是标准化以前的头文件原创 2007-02-25 11:29:00 · 1082 阅读 · 0 评论 -
利用HOOK拦截封包原理
截获API是个很有用的东西,比如你想分析一下别人的程序是怎样工作的。这里我介绍一下一种我自己试验通过的方法。 首先,我们必须设法把自己的代码放到目标程序的进程空间里去。Windows Hook可以帮我们实现这一点。SetWindowsHookEx的声明如下: HHOOK SetWindowsHookEx( int idHook, // hook type HOOKPROC lpfn转载 2007-02-18 18:38:00 · 1258 阅读 · 0 评论 -
字符指针和字符数组
字符指针和字符数组char* s1="hello"; char s2[]="world";两个表达式的含义是一样的.如果讲不同之处的话,VC6中编译时,对这两种定义进行了不同的处理;char *s1 = "hello"; 中的"hello",编译时指针指向的区域位于PE文件的.rdata节中,是只读的.不信的话,你可以试试:main(){ char *s1="hello"; ch转载 2007-02-13 18:21:00 · 687 阅读 · 0 评论 -
C 语言吧 · 问题资料大全
★本吧推荐的几个C编译器:http://post.baidu.com/f?kz=2769360◆本吧代码格式编辑器:http://post.baidu.com/f?kz=9364381◆二进制文件与文本文件的转换:http://post.baidu.com/f?kz=21576218◆本吧代码中显示?:http://post.baidu.com/f?kz=5054984◆C/C++ 编译器评测及下转载 2006-11-25 13:18:00 · 1106 阅读 · 0 评论 -
在同一个进程空间运行两个程序
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1376424 运行环境:Windows NT4.0/Windows 2000 关键字:进程隐藏,API截获,映像加载 众所周知,bo2k可以在一个指定的进程空间(比如explorer.exe进程)做为一个线程运行。本文试图找出一种方法,使得任意exe都可转载 2006-11-12 20:44:00 · 2038 阅读 · 1 评论 -
GCC使用手册
1.前言 GCC编译器的手册(GCC MANUAL)的英文版已经非常全面,并且结构也非常完善了,只是一直都没有中文的版本,我这次阅读了GCC编译器的主要内容,对手册的内容进行了结构性的了解,认为有必要对这次阅读的内容进行整理,为以后的工作做准备。 由于我对这个英文手册的阅读也仅仅是结构性的。因此有很多地方并没有看,所以这篇文档的内容我也只能写出部分,对于以后需要详细了解的地方转载 2007-06-18 11:57:00 · 708 阅读 · 0 评论