C/C++
dongfangyu
流浪在广州
展开
-
DLL入门浅析(2)——如何使用DLL
上文我简单的介绍了如何建立一个简单DLL,下面再我简单的介绍一下如何使用一个DLL。当一个DLL被生成后,它创建了一个.dll文件和一个.lib文件;这两个都是你需要的。要使用DLL,就需要载入这个DLL。隐式链接这里有两个方法来载入一个DLL;一个方法是捷径另一个则相比要复杂些。捷径是只链接到你.lib 文件并将.dll文件置入你的新项目的路径中去。因此,创建一个新的空的Win转载 2009-08-05 18:18:00 · 1576 阅读 · 0 评论 -
C++小知识之指针和引用的区别(温故而知新)
C++小知识之指针和引用的区别 温故而知新,指针和引用的概念,大学时都已熟知,实际用的时候往往又有些疑惑,故深入探究一下。从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其转载 2014-04-02 11:22:30 · 698 阅读 · 0 评论 -
std::map
<br /> <br /> <br />1. map中的元素其实就是一个pair.<br />2. map的键一般不能是指针, 比如int*, char*之类的, 会出错. 常用的就用string了,int也行.<br />3. map是个无序的容器, 而vector之类是有序的. 所谓有序无序是指放入的元素并不是按一定顺序放进去的, 而是乱序, 随机存放的(被映射后近似随机存放).所以遍历的时候有些效率差别.<br />4. 判断有没有找到该键的内容可以这样: <br />std::map<std::st原创 2010-06-23 14:17:00 · 11120 阅读 · 0 评论 -
TCP连接探测中的Keepalive 和心跳包
采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃、当机、网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回。很多时候,这不是我们需要的。我们希望服务器端和客户端都能及时有效地检测到连接失效,然后优雅地完成一些清理工作并把错误报告给用户。如何及时有效地检测到一方的非正常断开,一直有两种技术可以运用。一种是由TCP协议层实转载 2010-04-28 10:20:00 · 35519 阅读 · 0 评论 -
Socket中如何设置连接超时
设置connect的超时很简单,CSDN上也有人提到过使用select,但却没有一个令人满意与完整的答案。偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使那些想避免在套接字调用过程中被锁定的应用程序,采取一种有序的方式,同时对多个套接字进行管理"(《Windows网络编程技术》原话)。使用方法与解释请见《Windows网络编程技术》。 在使用此函数前,需转载 2010-03-22 22:58:00 · 2443 阅读 · 0 评论 -
IOCP模型总结(转)
IOCP模型总结(转)2009-07-02 09:58IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型。它是应用程序使用线程池处理异步I/O请求的一种机制。在处理多个并发的异步I/O请求时,以往的模型都是在接收请求是创建一个线程来应答请求。这样就有很多的线程并行地运行在系统中。而这些线程都是可运行的,Windows内核花费转载 2010-02-03 10:41:00 · 800 阅读 · 1 评论 -
用多路复用I/O模型实现支持多个客户端的通信服务
引言 多路复用I/O模型是UNIX/LINUX用得的最多的一种I/O模型。这种I/O模型在技术上的实现是包括select()以及FD_XXX的几个宏及常量。在单个进程中支持的客户端数量由FD_SETSIZE决定。Solaris 10和Linux 9.0默认为1024个,Windows 2000是64个。本文用代码给出该I/O模型处理多Client的一种实现。用select开发一个通信服务器转载 2010-02-03 09:41:00 · 780 阅读 · 0 评论 -
VC/MFC(C++)实现文件拷贝和文件删除等
1、文件拷贝///////////////////////////////////MFC版 文件拷贝/////////////////////////////////void FileCopyTo(CString source, CString destination, CString searchStr, BOOL cover = TRUE){CSt原创 2009-09-22 11:59:00 · 1803 阅读 · 0 评论 -
Singleton模式
Singleton模式是一种非常简单的设计模式,这种模式很常用也很容易被滥用。当你设计应用程序的时候,经常会遇到某些对象在整个程序的生命周期应该仅有一个实例的情况,比如File System,Graphic System,Logging Utility,这时候就可以用到Singleton模式。Singleton模式在GOF中描述如下: Ensure a class only has原创 2009-08-26 14:35:00 · 841 阅读 · 0 评论 -
C++完美实现Singleton模式
C++完美实现Singleton模式 Singleton模式是常用的设计模式之一,但是要实现一个真正实用的设计模式却也不是件容易的事情。1. 标准的实现class Singleton{public: static Singleton * Instance() { if( 0==原创 2009-08-26 14:29:00 · 1368 阅读 · 0 评论 -
心跳检测需要以下步骤
心跳检测需要以下步骤: 1 客户端每隔一个时间间隔发生一个探测包给服务器 2 客户端发包时启动一个超时定时器 3 服务器端接收到检测包,应该回应一个包 4 如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器 5 如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了原创 2009-08-25 11:59:00 · 1033 阅读 · 0 评论 -
Seek操作文件
似乎文件指针定位没有seek这个函数,请问你问的是哪种文件指针?如果是FILE的话,那么函数是fseek,例:[CODE] FILE * input_file;...open file...long lSeekPos = 10; //指向的位置fseek(input_file, lSeekPos, SEEK_SET);...[/CODE]如果是MFC的CFile的话那么头文字要大写:Seek,例:原创 2009-08-18 15:46:00 · 6200 阅读 · 0 评论 -
DLL入门浅析(5)——使用DLL在进程间共享数据
DLL入门浅析(5)——使用DLL在进程间共享数据 在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的,因为所有的进程用的都收同一块地址空间;而在Win32环境中,情况却发生了变化,每个进程都有了它自己的地址空间,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的进程所有。当进程在载入DLL时,操作系统自动把DLL地址映射到该进程的私有空间,也就原创 2009-08-05 18:22:00 · 1839 阅读 · 0 评论 -
DLL入门浅析(4)——从DLL中导出类
DLL入门浅析(4)——从DLL中导出类 前面介绍了怎么从DLL中导出函数和变量,实际上导出类的方法也是大同小异,废话就不多说了,下面给个简单例子示范一下,也就不多做解释了。DLL头文件:#ifndef _DLL_SAMPLE_H#define _DLL_SAMPLE_H// 通过宏来控制是导入还是导出#ifdef _DLL_SAMPLE#define DLL_SAMPLE_API __转载 2009-08-05 18:22:00 · 1973 阅读 · 1 评论 -
DLL入门浅析(3)——从DLL中导出变量
前面介绍了怎么从DLL中导出函数,下面我们来看一下如何从DLL中导出变量来。 声明为导出变量时,同样有两种方法: 第一种是用__declspec进行导出声明#ifndef _DLL_SAMPLE_H#define _DLL_SAMPLE_H// 如果定义了C++编译器,那么声明为C链接方式#ifdef __cplusplusextern "C" {#endif// 通过宏来控制转载 2009-08-05 18:19:00 · 1116 阅读 · 0 评论 -
DLL入门浅析(1)——如何建立DLL
初学DLL,结合教程,总结一下自己的所得,希望对DLL初学者们有所帮助。 动态链接库(DLL)是从C语言函数库和Pascal库单元的概念发展而来的。所有的C语言标准库函数都存放在某一函数库中。在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添加到可执行文件中。这种方法同只把函数储存在已编译的OBJ文件中相比更有利于代码的重用。但随着Windows这样的多任务环转载 2009-08-05 18:17:00 · 2029 阅读 · 0 评论 -
堆和栈的区别 (温故而知新)
堆和栈的区别 (转贴) 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由转载 2014-04-11 15:40:49 · 818 阅读 · 0 评论