摘要: http://vrlinux.com/wenzhangjingxuan/20100908/75026.html我喜欢用自己的语言通过联系现实生活中的一些现象解释一些概念,当我能做到这一点时,说明我已经理解了这个概念.今天要解释的概念是:同步/异步与阻塞/非阻塞的区别.这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地方.首先来解释同步和异步的概念,这两个概念与消息的通知机制有关.举个例子,比如我去银行办理业务,可能选择排队等候,也可能取一个小纸条上面有我的号码,等到排到我这一号时由柜台的人通知我轮到我去办理业务了.前者(排队等候)就是同步等待消息,而后者(等待别人通知 阅读全文
posted @ 2011-12-27 10:34 rookieeeeee 阅读(1090) 评论(1) 推荐(0) 编辑
摘要: #include <io.h>#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>char buffer[] = "look the sample!";void main( void ){int fh;unsigned byteswritten;if( (fh = _open( "G:\\write.txt", _O_RDWR | _O_CR 阅读全文
posted @ 2011-12-24 18:26 rookieeeeee 阅读(132) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>using namespace std;void main(int argc, char *argv[]){for (int i = 0; i < argc; i++){cout<<"argv["<<i<<"]="<<argv[i]<<'\n';}} 阅读全文
posted @ 2011-12-17 15:28 rookieeeeee 阅读(125) 评论(0) 推荐(0) 编辑
摘要: boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include <string>#include <iostream>#include <boost/shared_ptr.hpp>class implementation{public:~implementation() { std::cout <<"destroying i 阅读全文
posted @ 2011-12-15 16:40 rookieeeeee 阅读(1611) 评论(0) 推荐(0) 编辑
摘要: 前两天看到有人求客户端socket 发HTTP包的代码,受flw版主启发找了一些perl的资料,不过对perl 还是不太熟悉。也没有深入的研究。无意中发现了libcurl.so 这个库。去google上搜索发现它是处理客户端发送HTTP请求的库 以及可以处理web服务器回送回来的包。研究了两天将研究的成果,共享出来给大家一起研究。参考:http://curl.haxx.se/这是curl开发者的首页。利用libcurl.so库 我们能轻松的连接某个web站点。获得某个首页的html代码 或者是http 请求的头部。 还可以提交表单,此外它还支持ftp,https,/usr/include/cu 阅读全文
posted @ 2011-12-14 22:31 rookieeeeee 阅读(331) 评论(0) 推荐(0) 编辑
摘要: GetBuffer与ReleaseBuffer的用法,CString剖析2008-06-07 22:39 这是一个非常容易被用错的函数,主要可能是由于大家对它的功能不太了解。其实点破的话,也不是那么深奥。 GetBuffer(int size)是用来返回一个你所指定大小可写内存的成员方法。它和被重载的操作符LPCTSTR还是有点本质区别的,LPCTSTR是直接返回一个只读内存的指针,而GetBuffer则是返回一个可以供调用者写入的内存,并且,你可以给定大小。下面是个简单的,但也是非常典型的例子: int readFile(CString& str, const CString& 阅读全文
posted @ 2011-12-14 19:34 rookieeeeee 阅读(419) 评论(0) 推荐(0) 编辑
摘要: http 断点续传www.diybl.com 时间 : 2011-05-20 作者:匿名 编辑:hawk 点击: 1128 [ 评论 ]--原理: 1. 打开本地文件fopen,移动文件指针到文件尾fseek 2. 获得文件大小ftell, 格式化HTTP请求头 "Range: bytes=ftell -", 以偏移httpfile指针,实现断点续传 3. 获得要下载的文件,以二进制形式传输,OpenURL 4. 接收数据,防止阻塞PeekMessage Sample:显示代码打印01 char string[25];02 CString StrFileName=m_lf; 阅读全文
posted @ 2011-12-14 18:51 rookieeeeee 阅读(1218) 评论(0) 推荐(0) 编辑
摘要: 一、建立会话(Session)对象: CInternetSession mysession;二、连接到Http服务器: CHttpConnection *myconn=mysession.GetHttpConnection("www.baidu.com");三、打开Http请求: CHttpFile *myfile=myconn->OpenRequest("GET","/index.html");四、发送Http请求: myfile->SendRequest();五、从服务器读取字节流(bytes): CString my 阅读全文
posted @ 2011-12-14 17:09 rookieeeeee 阅读(7195) 评论(0) 推荐(0) 编辑
摘要: 回调函数是由用户撰写,而由操作系统调用的一类函数,回调函数可以把调用者和被调用者分开,调用者(例如操作系统)不需要关心被调用者到底是哪个函数,它所知道的就是有这么一类函数,这类满足相同的函数签名(函数原型,参数,返回值等),由用户书写完毕后在被调用就可以了。实现上回调函数一般都是通过函数指针来实现的。 典型的回调函数是MFC 下的定时器处理函数ontimer,你只需要添加这个消息响应函数,然后在初始化的时候将ontimer指针传递给操作系统,操作系统就会按照设定好的时间来循环调用ontimer函数了、你甚至可以将main函数理解成回调函数,因为它不会被客户程序员调用,只会被客户程... 阅读全文
posted @ 2011-12-14 10:50 rookieeeeee 阅读(754) 评论(0) 推荐(0) 编辑
摘要: #include "stdafx.h"#ifdef _DEBUG#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)#else#define DEBUG_CLIENTBLOCK#endif#define _CRTDBG_MAP_ALLOC#include <crtdbg.h>#ifdef _DEBUG#define new DEBUG_CLIENTBLOCK#endifint _tmain(int argc, _TCHAR* argv[]){int* p = new int();_Cr 阅读全文
posted @ 2011-12-13 18:48 rookieeeeee 阅读(169) 评论(0) 推荐(0) 编辑