- 博客(68)
- 资源 (25)
- 收藏
- 关注
原创 windows api 实现删除指定目录下的所有文件(包括子文件夹下的所有文件)
因工作需求,网上有一个CFileFind相关的示例,但因这部分功能需要放在服务器端,故用win api实现了这个功能,代码如下:BOOL IsDirectory(const char *pDir){ char szCurPath[500]; ZeroMemory(szCurPath, 500); sprintf_s(szCurPath, 500, "%s//*"
2011-06-21 20:03:00 14198
原创 IO完成端口学习示例
连接:http://blog.csdn.net/sodme/archive/2006/04/17/666062.aspxhttp://lijinshui.bokee.com/3245440.htmlhttp://blog.csdn.net/sodme/archive/2005/07/17/427405.aspxhttp://blog.csdn.net/vieri_ch/archiv
2011-06-11 17:32:00 1537 1
原创 网络编程实践学习报告
1. socket的keepalive ---以后详述2. 完成端口的工作线程取包过程,返回结果, msdn有错。--以后详述 。3.
2011-06-03 09:42:00 861
原创 timer 定时器
<br />链接资料:<br />http://blog.csdn.net/yuntongsf/archive/2009/12/03/4936161.aspx<br />http://apps.hi.baidu.com/share/detail/18082112<br /> <br />个人代码:<br />// TimerExample.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <windows.h>int _tmain
2011-05-30 20:27:00 600
原创 文件操作
<br />基本用法:<br />http://blog.csdn.net/yingfox/archive/2007/12/06/1921600.aspx<br /> <br />个人写的代码:<br />#include <stdio.h> #include <stdlib.h>#include <windows.h>int main() { char szFileName[MAX_PATH]; ZeroMemory(szFileName, MAX_PATH); strcpy
2011-05-28 17:58:00 794
原创 设计select的真正目的
首先明确IO分为阻塞IO和非阻塞IO,为了提高性能,windows网络编程中提出了5中IO模型,其中设计select的真正目的是:1. 防止应用程序在套接字处于锁定模式时,在一次IO绑定调用过程中,被迫进入“锁定”状态;2. 防止套接字处于非锁定(非阻塞)模式时,产生WSAEWOULDBLOCK错误。解释下2:一般在非阻塞模式时,accept等函数会立即返回,错误为WSAEWOULDBLOCK,然后通过循环调用accept直到来了一个连接,这样调用的效果并不好,所以采用sele
2011-05-28 12:51:00 831
原创 好文章整理
1.关于#pragma warninghttp://dev.csdn.net/article/66/66106.shtm2.installshield 使用:http://www.cnblogs.com/Cindy_weiwei/archive/2009/05/19/1460230.html3.NTDLL.DLL): 0xC0000005: Access Violation问题:A-------在内部进行调试的时候发现,是调用了new操作符的缘故。 很不理解,在dll中调用new操作符会出现这么一个问题,网
2011-05-15 19:37:00 757
原创 windows内存映射
为了说明内存映射的使用方式,下面是个人写的例子:首先创建了一个大于2GB的文件,并写入一定量地测试数据,代码如下:HANDLE hFile = CreateFile("media.mp3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); //TODO: change the size of the file. if (hFile == INVALI
2011-05-07 10:02:00 1475
原创 windows核心编程读书笔记
<br /><br />1.<br />必须记住的是,内核对象的存在时间可以比创建该对象的进程长。<br />2.<br />内核对象能够得到安全描述符的保护。安全描述符用于描述谁创建了该对象,谁能够访问或使用该对象,谁无权访问该对象。安全描述符通常在编写 服务器应用程序时使用,如果你编写客户机端的应用程序,那么可以忽略内核对象的这个特性。<br />3.<br />HANDLE CreateThread(<br /> PSECURITY_ATTRIBUTES psa,<br /> DWORD dw
2011-04-28 10:29:00 791
原创 windows io 异步读写
#include #include void main(){ HANDLE hfile = CreateFile("test.txt",GENERIC_READ | GENERIC_WRITE, 0,NULL,CREATE_ALWAYS, FILE_FLAG_OVERLAPPED | FILE_ATTRIBUTE_NORMAL,NULL); if (hfile == INVALID_HANDLE_VALUE) { printf("invalid handle
2011-04-27 11:08:00 1618
原创 c++编译器偷偷做的事
贴一:http://blog.csdn.net/ACb0y/archive/2011/02/11/6179167.aspx贴二:http://kmplayer.iteye.com/blog/674710以上是其中一部分。对于c++类中带有虚拟函数时,显示多态特性时,编译器做的事情:1.默认会为每一个class object生成一个虚拟函数表指针,该指针指向一个外部的虚拟函数表,表内存有type_info信息和虚拟函数信息。2.默认情况下构造函数会初始化这个虚拟函数表指针,析构函数会释放该虚拟函数表指针指向的
2011-04-13 11:15:00 668
原创 IPPROTO_IP Option Level
<br />IPPROTO_IP Option Level<br />The socket options on the IPPROTO_IP level pertain to attributes specific to the IPv4 protocol, such as modifying certain fields in the IPv4 header and adding a socket to an IPv4 multicast group. Many of these optio
2011-04-11 10:27:00 4427
原创 multicast(一) (转自network programming for microsoft windows, second edition.)
看完这个就知道IGMPV3怎么实现了,简单,容易:Multicasting with SetsockoptOriginally, the only way to join or leave a multicast group was via the setsockopt API. Winsock 2 introduces a protocol-independent method of multicasting with the WSAJoinLeaf API (discussed in t
2011-04-08 11:14:00 2247 5
原创 typeid和异常
转自 :http://www.cppblog.com/smagle/archive/2010/05/14/115286.html同时必须注意vc6.0对typeid的支持性不够好 ,很简单的一点:
2011-04-07 10:12:00 711
原创 条款34: 将文件间的编译依赖性降至最低 (转自effective c++ second edition)
<br /><br />假设某一天你打开自己的C++程序代码,然后对某个类的实现做了小小的改动。提醒你,改动的不是接口,而是类的实现,也就是说,只是细节部分。然后你准备重新生成程序,心想,编译和链接应该只会花几秒种。毕竟,只是改动了一个类嘛!于是你点击了一下"Rebuild",或输入make(或其它类似命令)。然而,等待你的是惊愕,接着是痛苦。因为你发现,整个世界都在被重新编译、重新链接!<br />当这一切发生时,你难道仅仅只是愤怒吗?<br />问题发生的原因在于,在将接口从实现分离这方面,C++做得不
2011-04-01 10:27:00 572
原创 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用 (转自effective c++ second edition)
<br /><br />本条款听起来很复杂,其实不然。它只是一个很简单的道理,真的,相信我。<br />先看第一种情况:返回一个局部对象的引用。它的问题在于,局部对象 ----- 顾名思义 ---- 仅仅是局部的。也就是说,局部对象是在被定义时创建,在离开生命空间时被销毁的。所谓生命空间,是指它们所在的函数体。当函数返回时,程序的控制离开了这个空间,所以函数内部所有的局部对象被自动销毁。因此,如果返回局部对象的引用,那个局部对象其实已经在函数调用者使用它之前被销毁了。<br />当想提高程序的效率而使函
2011-04-01 10:06:00 799
原创 windows thread的简单使用
<br />由于主要使用pthread-win32,所以对windows自带的线程没那么熟练,写个例子练下手:<br />#include <windows.h>#include <winbase.h>#include <process.h>#include <stdio.h>#include <stdlib.h>#pragma comment(lib,"MSVCRT.LIB")HANDLE event;HANDLE mutex;unsigned int __stdcall
2011-03-31 17:46:00 5819 1
原创 类与类之间的转化,重载user-defined类型运算符
#include #include using namespace std;#include #include #include class d_Hello;/** * probeMatch message format in the received data soap:body.*/class d_probeMatch{public: d_probeMatch() { memset(m_d_Types,0,50); memset(m_
2011-03-31 11:06:00 684
原创 条款10: 如果写了operator new就要同时写operator delete (转自effective c++ second edition)
<br /><br />让我们回过头去看看这样一个基本问题:为什么有必要写自己的operator new和operator delete?<br />答案通常是:为了效率。缺省的operator new和operator delete具有非常好的通用性,它的这种灵活性也使得在某些特定的场合下,可以进一步改善它的性能。尤其在那些需要动态分配大量的但很小的对象的应用程序里,情况更是如此。<br />例如有这样一个表示飞机的类:类airplane只包含一个指针,它指向的是飞机对象的实际描述(此技术在条款34进
2011-03-31 10:19:00 581
原创 没关闭socket带来的后果
封装了socket后,把以前的程序都更改了一遍,于是漏掉了closesocket函数的调用,个人用udp的习惯是绑定指定的本机地址和port,所以上一个socket未关闭,socket未处理time_wait状态,当然已经设置了SO_REUSEADDR,但还是会导致下一个socket,无法正常接收。测试了一下,新创建socket可以绑定成功,但是调用select读取返回一直返回0,但是偶尔还是可以的,真是个郁闷的不确定性。。。
2011-03-30 16:24:00 4170
原创 内存分配失败的处理
<br />看到effective c++中内存分配的处理,编写代码便于以后的理解:<br />1. 基本版:<br />#include <new.h>#include <iostream>using namespace std;int PrintError(size_t size){ cout<<"memory failed in allocation/t"<<size<<endl; return 0; //return 1; if executes here, then t
2011-03-29 11:28:00 5644
原创 global class object互使用注意事项
看effective c++中说明这一点,有点怀疑,所以试了一下,下面会说明怀疑点:GlobalTest.h源代码:#ifndef GLOBALTEST_H#define GLOBALTEST_Hclass GlobalTest{ public: GlobalTest(); virtual ~GlobalTest(); int GetA(){return m_a;} protected: private:
2011-03-26 22:37:00 946
原创 多播和广播
1.广播一般局限于局域网,多播即可用于局域网也可跨越广域网。2.广播地址:如在192.168.1.xxx局域网内,广播地址为:192.168.1.255。多播地址为IPv4D类地址:224.0.0.0到239.255.255.255.一般推荐239.0.0.0到239.255.255.255.3.多播具备比较完备的过滤功能,而广播容易引起网络风暴。
2011-02-19 13:52:00 696
原创 一个漂亮的 mfc button开源代码
<br />在codeprojecthttp://www.codeproject.com/KB/buttons/cbuttonst.aspx上,可以下载到该源代码以及使用该源代码出来的例子效果,同时扩展出来的好看的如CShadeButtonST等等效果也着实不错,大家可以下载下来试试。
2011-02-14 11:30:00 1724 1
原创 读program_think生产者消费者模式有感
<br />针对个人在开发的一个搜索工具,因为之前并没有设计,有现成的,但是需要做一个内部使用的工具,所以就做了个山寨版,没有设计,直接上手开发,看了program_think的博文后,突然想起以前的自己明明就是设计偏爱设计,所以针对性的总结一下。<br /> <br /><br /> <br />关联关系:<br />首先声明缓冲区可以采用队列缓冲区,环形缓冲区,或者采用两个队列缓冲区(取出如果采用多线程时的同步和死锁开销)。<br />缓冲区可以作为缓冲类的成员,内部还有生产者对象和消费者对象。生产者将
2011-02-12 11:09:00 2443
原创 CComboBox 改变大小时注意事项
<br />MFC中的CComboBox类中用MoveWindow改变大小时,它的高度实质上是设置了list box的高度,<br />即combobox显示区域的高度,这里要注意!!!
2011-02-10 17:12:00 1357
原创 2011是否依然心存梦想和激情~
<br />2011年一月27日年会开始了,这对我来说,意味着2010年过年的钟声即将响起,从7月份毕业,到现在已有半年时间,我作为一名程序员,内心的酸涩已无法用只言片语来形容。<br /> <br />2009年冬(大四),进入某大型外企工作仅三个月,无法忍受IT苦力工的现实,由做c#转到c/c++,面试了一家小企业,easy的进去了,因为要回校答辩,所以没有考虑太多,先拿下了offer,算作失败的跳槽,工资下降1k多,毕业时的斗志,是希望能找到一家可以发挥自己专长,成就自己梦想的地方,所以薪资问题并没有
2011-01-28 09:41:00 747 1
原创 tinyxml用法学习
通过在http://www.grinninglizard.com/tinyxml/ 下载tinyxml最新的release版,解压后可以在docs下我们可以查看tinyxml的节本用法,为了快速的掌握,可以在class Hierarchy 中打开TiXmlBase可以发现其类图结构。下面是我个人为了掌握或者说测试tinyxml,写的代码://#define TIXML_USE_STL#include "tinystr.h"#include "tinyxml.h"#include //tes
2011-01-14 11:51:00 2450 2
原创 problem log
1 recvfrom陷阱:记得以前学习网络的时候,每次发送和接收的包的大小最大不超过1500,数据部分最大不超过1460,而以前的我对书本知识总是念念不忘,觉得这是定律,当在写了一个udp broadcast程序后,发现广播出去后,接收的包的大小有的一次可接收超过1500的大小,也就是对方并没有对包进行分组发送,那么我接收的时候也不需要分组接收,而是一次性将一个比较大的包接收过来,recvfrom的参数buff的length最好设置为2000(也可通过抓包软件抓包来判断好包的大小后,再进行重新调整),以防止
2011-01-11 09:14:00 583
原创 迟来的2010总结
<br />踏入社会至今已有1年整了,大四开始在一家大型外企实习,做c#,三个月,三个月的苦力期终结了,没毕业之前就换了一份工作,做c/c++,因为大学很多的课设以及项目都是用java和.net开发,所以对c++基本忘了个光光,由于进的是一家小企业,所以怎么都能轻而易举拿下了 ~毕业之前,在这家小公司实习了一个月,这一个月收获着实不少,对c++的基本内容掌握了,看了一下windows核心编程,浏览了下win32API大全~<br />毕业后,情况就不太一样了,夜晚很多时候不再是自己的,周末也一样,因为有了她
2011-01-08 19:43:00 380
原创 2010的最后一天
当然兴奋了,终于确定了自己的开源项目了,因为一直未想出想要开发什么样的项目比较合适自己,今天终于逼迫自己想了一整天,最终决定做一个httpserver, 然后做一个browser。那么就从2011的第一天开始httpserver的开发吧。。。
2010-12-31 13:52:00 490
原创 socket通信简单例子
<br />在看unix网络编程,闲着的时候采用TCP实现了一个简单的cs通信示例:<br /> <br />tcpServer.c:<br />#include <stdio.h>#include <stdlib.h>#include <windows.h>#define MAX_LISTEN_QUEUE_NUMBER 10#define HOST_PORT 10000#define MAX_P
2010-12-29 14:33:00 548
原创 阻塞,非阻塞IO和同步,异步IO
<br />在oschina我的博客中有所讲解,链接如下:<br /><br /><br />http://my.oschina.net/shawnChen/blog/11508
2010-12-24 17:14:00 438
原创 使用基本的ace类通信 c/s
正在学习ACE,在http://www.oschina.net/code/snippet_102078_2515中,已经将代码贴出,实现采用ACE的基本socket相关类。
2010-12-22 15:32:00 658
原创 设计模式学习过程
博客园中的文章链接如下http://www.cnblogs.com/hegezhou_hot/category/260424.html看了单件,工厂,抽象工厂模式。这个链接的文章http://www.cnblogs.com/bear831204/archive/2010/10/22/1858395.html讲了观察者模式。
2010-12-14 10:23:00 457
原创 对threadpool的性能测试
<br />自己编写的threadpool(http://www.oschina.net/code/snippet_102078_2072或者http://jaff20071234.download.csdn.net/),没有正规的文档,只能自己编写程序进行性能测试了。<br /> <br />1。<br />创建一个threadmanage对象只含有10个线程,同时运行10000个任务,每个任务的工作是循环50次打印字符串。<br />创建一个threadmanage对象只含有100个线程,同时运行100
2010-12-03 14:40:00 1782 1
原创 支持通用框架的threadpool代码
------2010-12-1------线程池稍微模型,但是明显存在的一个大问题是---我的线程类实现的机制有问题:在每个start函数中创建线程,在创建线程之前,调用了sem.wait()函数,这样的话,主线程在创建第一个thread的start函数就wait在哪里,主线程无法继续走下去了 。。。悲哀,明天继续考虑其他的方式。---shawn------2010-12-2------
2010-12-01 21:55:00 699
原创 find方法in algorithm和stl vector同时使用
刚用stl,很久之前学过的,但是很久没用了,最近做项目需要,随便写测试程序的时候发现不看确实不行。一个类型的对象能被放入容器,且支持容器的各项操作,需要符合下列条件:对象的构造和拷贝● 容器的insert、assign 等操作实际上是对一个对象的副本进行操作● 一个类型的对象能被放入容器、且支持容器的各项操作,需符合下列条件:● (最好)有默认构造函数● 必须有复制构造函数● 必须有T& operator=(const T& other) 形式的赋值操作 比较操作 ● 基于RBTree
2010-12-01 16:45:00 1694
autoconf-automake使用示例
2013-09-29
一个用codeblocks实现的具有通用框架线程池
2010-12-02
open rtsp client
2010-11-10
获取网段内所有主机IP并访问可以访问的设备。
2010-09-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人